创建JavaScript对象
JavaScript本身包含很多对象,包括Array、String、Boolean、Number、Mah、Data、RegExp、Global等。除此之外JavaScript还允许自定义对象。
通过JavaScript,我们可以定义并创建自己的对象。创建新对象有两种不同的方法:
1.定义并创建对象的实例使用Object;
2.使用构造函数Function来定义对象,然后创建新的对象实例。
Object方法来创建一个对象以及它的实例:
varperson=new Object();person.firstname="Bill";person.lastname="Gates";person.age=56;person.eyecolor="blue";
实例:
person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};
使用Fucntion构造函数来创造对象以及它的实例
function person(firstname,lastname,age,eyecolor){this.firstname=firstname;this.lastname=lastname;this.age=age;this.eyecolor=eyecolor;}
使用构造函数创建对象实例
var myFather=newperson("Bill","Gates",56,"blue");
备注:在使用构造函数创造对象时,还有另一种创造对象的方法,但是这种方法在性能上不如上面这种方法,在声明顺序上有严格的要求,使用起来不是很方便,所以不建议使用:
var person=new Function (firstname,this.firstname=firstname;lastname,this.lastname=lastname;age,this.age=age;eyecolor,this.eyecolor=eyecolor;);
添加成员
Object对象添加静态成员只存在于对象的myObj实例而不存在构造函数中。
var myObj= newObject();//添加name属性myObj.name='LD';//添加alertName方法myObj.alertName=function(){alert(this.name);}//执行alertNamemyObj.alertName();
Function添加静态成员可以存在myObj实例,也可存在构造函数中。
var myObj=newfunction(){//添加静态属性myObj.name='LD';//添加静态方法myObj.alertName=function(){alert(this.nam);}}myObj.alertName();
关于上面添加的静态成员,只能应用于myObj这个实例中,不能应用于其它的实例中,否则会报错,这就是静态成员的应用。
能够使实例化的对象包含的方法称为公有成员,需要修改函数的原型,即prototype属性,修改后,任何继承该对象的对象已经存在的所有实例都会立即继承统一的变化。
functionmyConstructor(){}//添加公有属性myConstructor.prototype.myName='LD';//实例化var myObj=newmyConstructor();alert(myObj.myName);
由myConstructor实例化的对象可以使用myName,但是myConstructor本身不可以,因为我们把公有成员加到了myConstructor的底层定义中,而非myConstructor实例本身。
私有成员就是在构造函数中定义的变量和函数,这个比较简单只要在构造函数大括号中的属性和方法都算是私有的。
functionmyConstructor(){//添加私有属性var myName='Ld'l//添加私有方法varalertName=function(){alert('LD');}alertName();
特权成员与私有成员不同,特权成员能够被公开访问,而且还能访问私有成员,特权成员是指在构造函数的作用域中使用this定义的方法
functionmyConstructor(){//私有属性varname='Devin';// 特权方法this.alertName=function(){alert(name);}}
成员之间比较
私有成员和特权成员都再函数的内部,他们会被带到函数的每一个实例中,因而将占用大量的内存;公有的原型成员是对象蓝图的一部分,适用于通过new关键字实例化该对象的每一个实例;静态成员只适用于对象的一个特殊实例。