雖然Object構造函數或者對象字面量都可以創建單個對象,但是這些方式有個明顯的缺點:使用同一個介面創建很多對象,會產生大量的重覆代碼,為瞭解決這個問題,現在很多人創建了很多不同的模式來解決這個問題 1>工廠模式:工廠模式是軟體工程領域一種廣為人知的設計模式,這種模式抽象創建具體對象的過程 2>構造 ...
雖然Object構造函數或者對象字面量都可以創建單個對象,但是這些方式有個明顯的缺點:使用同一個介面創建很多對象,會產生大量的重覆代碼,為瞭解決這個問題,現在很多人創建了很多不同的模式來解決這個問題
1>工廠模式:工廠模式是軟體工程領域一種廣為人知的設計模式,這種模式抽象創建具體對象的過程
function CreatPerson(name,age,job) { var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function () { console.log(this.name); }; return o; } var person1=new CreatPerson('kobe',39,'player'); person1.sayName();
2>構造函數模式:經歷4個步驟1>創建一個新對象2>將構造函數的作用域賦給新對象(因此this就指向這個新對象)3>執行構造函數中的代碼(為這個新對象添加屬性)4>返回新對象
構造函數就是你用new創建對象時調用的函數。使用構造函數的好處在於所有用同一個構造函數創建的對象都具有同樣的屬性和方法。
function Person(name) { this.name=name; this.sayName=function () { console.log(this.name); } } var person1=new Person('kobe'); var person2=new Person('james'); console.log(person1.name); console.log(person2.name); person1.sayName(); person2.sayName();
console.log(person1 instanceof Person);
console.log(person2 instanceof Person);
3>原型對象:將信息直接添加在原型對象上,我們創建的每個函數都有一個prototype屬性,這個屬性是一個指針,指向一個對象,而這個對象的用途的就是可以讓所有實例對象共用它所包含的屬性和方法
缺點:使用原型,所有實例對象都有共同的屬性和方法,所有會造成不好的影響,
1 Person.prototype= { 2 name:'kobe', 3 age:39, 4 sayName:function () { 5 console.log(this.name+'---'+this.age); 6 } 7 } 8 9 var person1=new Person(); 10 person1.sayName();