當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
面向对象JS编程(一)——创建对象
生活随笔
收集整理的這篇文章主要介紹了
面向对象JS编程(一)——创建对象
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.普通模式
var person = new Object();person.name = "Laughing";
person.age = 28;
person.job = "Software Engineer";
peron.sayName = function(){
alert(this.name);
};
person.sayName();
缺點:創建多個對象時,會產生大量的重復代碼。
2.工廠模式
function createPerson(name, age, job){var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
alert(this.name);
};
return o;
}
var person1 = new Person("Laughing", 28, "Software Enginner");
var person2 = new Person("Greg", 27, "Doctor");
缺點:無法識別對象的類型。
3.構造函數模式
function Person(name, age, job){this.name = name;
this.age = age;
this.job = job;
this.sayName = function(){
alert(this.name);
};
}
var person1 = new Person("Laughing", 28, "Software Enginner");
var person2 = new Person("Greg", 27, "Doctor");
優點:可以使用instanceof判斷對象類型,即alert(person1 instanceof Person); //true
缺點:每個方法都需要在每個實例上重新創建一遍。
4.原型模式
function Person(){}
Person.prototype.name = "Laughing";
Person.prototype.age = 29;
Person.prototype.job = "Software Engineer";
Person.prototype.sayName = function(){
alert(this.name);
};
var person1 = new Person();
var person2 = new Person();
alert(person1.sayName == person2.sayName); //true
缺點:對于包含引用類型值的屬性,共享非常不合適。如:
function Person(){}
//更簡單的原型模式
Person.prototype = {
constructor: Person, //重新指定constructor
name : "Laughing",
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" 期望是 "Shelby, Court"
5.原型構造模式
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("Laughing", 28, "Software Engineer");
var person2 = new Person("Greg", 29, "Doctor");
person1.friends.push("Van");
alert(person1.friends); //"Shelby, Count, Van"
alert(person2.friends); //"Shelby, Count"
轉載于:https://www.cnblogs.com/shaobo/archive/2012/01/06/2315063.html
總結
以上是生活随笔為你收集整理的面向对象JS编程(一)——创建对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 13个代码注释的小技巧
- 下一篇: gradle idea java ssm