本文详细讲解了JavaScript中对象的三种声明方式:使用Object构造函数、构造函数模式以及JSON字面量格式,并深入探讨了数组的多种创建方法。内容涵盖原型链属性的继承机制、函数参数的动态识别特性,以及利用闭包实现私有变量与公有方法的封装技巧,辅以完整的代码示例说明。
JavaScript对象声明与数组用法详解
具体实现代码如下所示:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> 新文档 </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<script>
// 定义一个通用的打印函数
var $=function(str){
document.write(str);
document.write("<br/>");
}
// 定义用于打印数组内容的函数
var _=function(arr){
for(var tmp in arr)
{
$(arr[tmp]);
}
}
// 创建一个学生对象实例
var stu=new Object();
// 声明对象的属性与方法
stu.id=16;
stu.name='灯币';
stu.age=function(){
return this.id;
}
// 输出学生相关信息
$(stu.id);
$(stu.name);
$(stu.age());// 调用方法时需添加括号
stu.sex='女'; // 动态添加新属性
$(stu.sex); // 打印新添加的属性值
// 方案2:使用构造函数
function Student(id,name)
{
this.id=id;
this.name=name;
this.getAge=function(){
return this.id;
}
}
// 实例化与使用
var stu2=new Student(1,'扬顿');
$(stu2.id);
$(stu2.name);
$(stu2.getAge());
// 进一步定义属性
// 动态语言如何实现跨对象访问?
Student.prototype.address="阿富汗";
$(stu2.address);
$("stu2_1 begin...");
var stu2_1 =new Student(1,'扬顿');
$(stu2_1.id);
$(stu2_1.name);
$(stu2_1.getAge());
$(stu2_1.sex);
$(stu2_1.address); // 跨域访问,即b对象访问a对象的属性
// 在定义
$("stu2_1 end...");
// 方案3:使用JSON格式
var stu3={id:1,name:'毛炎炎',getName:function(){return this.name;}};
$(stu3.id);
$(stu3.name);
$(stu3.getName());
//var stu2
// js里面的函数很多与java里面函数同名
var str1=new String("abcd")
var str2="asdf";
$(str1.indexOf('c'));
$(str1.charAt(3));
$ (str2.charAt(3));
$("absdf".substring(2,4));
var day=new Date();
$(day.getYear());
$(day.toLocaleString());
// 再次讨论数组
var arr1=new Array(3);
arr1[0]=10;
arr1[1]=20;
arr1[2]=3;
_(arr1);
arr1[3]=4;
//
_(arr1);
// 数组2
var arr2=new Array(234,345,2354,2134,234);
_(arr2);
// 数组3
var arr3=new Array();
arr3[0]=10;
arr3[1]=20;
arr3[2]=3;
_(arr3);
// 数组4.推荐写法
var arr4=[];
arr4[0]=10;
arr4[1]=20;
arr4[2]=3;
_(arr4);
// 数组5.推荐写法
var arr5=[3254,43,532,45,2345];
_(arr5);
function add(i,j){
return i+j;
}
function add(i,j,k){
return i+j+k;
}
$(add(1,2));// 参数个数自动识别
var Person=function(id,name)
{
this.id=id;//public
this.name=name;//public
var i=1;//private
function test(){//private
alert('asdf');
}
this.t=function()//public
{
return 1;
}
}
var p=new Person(1,"陈新");
$(p.id);
$(p.name);
$(p.t());//正常访问
$(p.test()); //不能访问
</script>
</head>
<body>
</body>
</html>