建構方法 複製程式碼 程式碼如下: function co ( { this.name = '現代魔法'; this.job = 'Web 開發者'; this.coding = function () { alert('我正在寫代碼' }} var coder = new coder();alert(coder.name);coder.coding(); 工廠方法工廠方法工廠方法 工廠方法 複製程式碼 程式碼如下:function createCoderFactory(){ > obj.name = '現代魔法'; obj.name = '現代魔法'; obj.name = '程式設計師'; obj.job = '程式設計師'; obj.coding = function () 🎜> }; return obj; }var coder = createCoderFactory();alert(coder.name);2,coding(); 工廠方法和建構方法都有一個相同的缺點,就是每創建一個實例,都會實例化該類別的每個函數。 原型鏈 複製程式碼 程式碼如下:function coder(){}coder.prototype.name = '現代魔法';coder.prototype.job = '程式設計師';coder.prototype.coding = function(){ alert('我正在寫程式碼'); };var coder = new coder();alert(coder.name);coder.coding();原型鏈有個缺點就是它所有屬性都共享,只要一個實例改變其他的都會跟著改變。如: 複製程式碼 程式碼如下: var coder1 = new coder(a); coder2 = new coder();alert(coder1.name); /*顯示現代魔法*/coder2.name = 'nowamagic'; alert(coder1.name); /alert(coder2.name); /*這也顯示nowamagic*/混合方式以上三種都有各自的缺點,所以我們要加以改進。 複製代碼 代碼如下:function coder(){ this .name = '現代魔法'; this.job = '程式設計師';}coder.prototype.coding = function(){ alert('我正在寫程式碼'); };動態原鏈要解決前三種的缺點,還有一個方法。 複製代碼 代碼如下:function coder(){ this .name = '現代魔法'; this.job = '程式設計師'; if (typeof(coder._init) == 'undefined') ) { alert('我正在寫程式碼'); }}