javascript创建对象的方法
1.工厂模式
function Perso(name,age,job){
var o=new Object();
o.name=name;
o.age=age;
o.job=job;
o.sayName=function(){
alert(o.name)
}
}
var person1=Person("Nico",23,"Doctor")
var Person2=Person("xll",12,"Teacher")
或者
var lev=function(){
return "脚本之家";
};
function Parent(){
var Child = new Object();
Child.name="脚本";
Child.age="4";
Child.lev=lev;
return Child;
};
var x = Parent();
alert(x.name);
alert(x.lev());
说明:1.在函数中定义对象,并定义对象的各种属性,对象属性的方法建议写在函数外面,这样可以避免重复重建该方法。
2.引用对象,注意:使用的是var x=Parent(),而不是var x=new Parent(),因为后者会可能出现很多问题(前者也成为工厂经典方式,后者称之为混合工厂方式),不推荐使用new的方式使用该对象
3.函数最后用return返回该对象
4.不推荐使用该方法
2.构造函数模式
1 function(age,name,job){ 2 this.name=name, 3 this.age=age; 4 this.job=job; 5 this.sayName=function(){ 6 alert(this.name) 7 } 8 } 9 var person1=new Person('xll',23,"Doctor") 10 var person2=new Person('we',23,"Doctor")
说明:
1.与工厂方式相比,使用构造函数方式创建对象,无需再函数内部重建创建对象,而使用this指代,并而函数无需明确return
2.同工厂模式一样,虽然属性的值可以为方法,扔建议将该方法定义在函数之外
3..同样的,不推荐使用这种方式创建对象,但仍需要了解
要创建Person的实例,必须使用new操作符,经过以下4个步骤
1.创建一个对象
2.构造函数的作用域赋给新对象(因此this指向就指向这个新对象)
3.执行构造函数的代码(为这个新对象添加属性)
4.返回新对象
Person函数可以通过以下方法调用
//通过构造函数
var person1=new Person('xll',23,'Doctor');
person1.sayNmae();
//通过普通函数调用
Person('xll',23,'Doctor'); //添加到window
widow.sayName(); //xll
//在另一个对象的作用域调用
var o=new Object();
Person.call('xll',12,"doctor");
o.sayName() //xll
浙公网安备 33010602011771号