您的位置:首页 > Web前端 > JavaScript

JavaScript中创建对象的方式

2013-07-13 23:21 99 查看
JavaScript中创建对象的方式有多种,这里只介绍三种:构造函数模式、原型模式、组合使用构造函数模式和原型模式(推荐)

1、构造函数模式

function Person(name, age, job){
this.name = name;
this.age = age;
this.job = job;

this.sayName = function(){
alert(this.name);
};
}

var person1 = new Person("Nicholas", 29, "software engineer");
var person2 = new Person("Greg", 27, "doctor");
缺点:使用构造函数的问题就是每个方法都要在新创建的实例上重新创建一遍。

2、原型模式

function Person(){}

Person.prototype = {
constructor : Person,
name :  "Nicholas",
age : 29,
job : "software engineer",
friends : ["Shelby","Court"],
sayName : function(){
alert(this.name);
}
};

var person1 = new Person();
var person2 = new Person();

person1.friends.push("Van");

alert(person1.friends); //"Shelby,Court,Van"
alert(person2.friends); //"Shelby,Court,Van"
alert(person1.friends === person2.friends); //true
缺点:使用原型方式的一个突出问题在于如果包含引用类型的属性(Person.friends),那么

某一个对象修改这个属性值,会影响到其它对象。

3、组合使用构造函数模式和原型模式(推荐方式)

function Person(name, age, job){
this.name = name;
this.age = age;
this.job = job;
this.friends = ["Shelby","Court"];
}

Person.prototype = {
constructor : Person,
sayName : function(){
alert(this.name);
}
};

var person1 = new Person("Nicholas", 29, "software engineer");
var person2 = new Person("Greg", 27, "doctor");

person1.friends.push("Van");

alert(person1.friends); //"Shelby,Court,Van"
alert(person2.friends); //"Shelby,Court"
alert(person1.friends === person2.friends); //false
alert(person1.sayName === person2.sayName); //true


JS创建对象的方式除了以上三种,还有其它多种方式,请参考文章http://www.cnblogs.com/tiwlin/archive/2009/08/06/1540161.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: