以下透過文字詳解加程式碼分析的方式給大家分享下javascript設計模式之物件工廠函數與建構函數的相關知識。
概述使用物件字面量,或在空物件中動態新增成員,是最簡單易用的物件建立方法。然而,除了這兩種常用的物件建立方式,JavaScript還提供了其他方法建立物件。 1).使用工廠函數創建對像我們可以編寫一個函數,此函數的功能就是創建對象,可將其.
概述
使用物件字面量,或在空物件中動態新增成員,是最簡單易用的物件建立方法。
然而,除了這兩種常用的物件建立方式,JavaScript還提供了其他方法建立物件。
1).使用工廠函數建立物件
我們可以寫一個函數,此函數的功能就是建立對象,可稱為「物件工廠方法」。
2).定義物件建構子
a).物件建構子首字母大寫
b).內部使用this關鍵字為物件新增成員
c).使用new關鍵字呼叫物件建構子
console.info(this.name);
};
} //使用new呼叫物件建構子建立物件
var p1 = new Person('張三', 29, '軟體工程師');
var p2 = new Person('李四', 40, '醫生');
以普通方式呼叫的「建構子」
建構函數其實也是一個函數,不同之處在於呼叫它時必須要加一個「new」關鍵字,如果不加這個關鍵字,則對它的呼叫被認為是普通函數呼叫。
物件建構子長得這個樣:
實際上是這樣(示意):
建構函式完成的工作
1. 建立一個新的物件
2. 讓建構子的this引用這個新建立的物件
3. 執行建構函式中的程式碼,這些程式碼通常完成新增屬性給新物件的工作
4. 向外界傳回新建立的物件參考。
物件建構子與物件工廠方法的差異
1. 物件建構子中沒有明確的物件建立程式碼
2. 新物件應具備的屬性與方法是透過this引用新增的.
3. 物件建構函式中沒有return語句
通常會把物件建構函數的首字母設為大寫的,以區別於普通函數。
物件的constructor屬性
a).使用對象工廠函數建立對象,每個對象的constructor屬性引用Object()
其constructor屬性引用Object()函數
console.info(person1.constructor === Object);
//true
b).使用物件建構子建立對象,每個物件的constructor屬性引用這個建構子
new TestArgumentsCallee();
//TestArgumentsCallee
//true
//true
於是,可以直接用arguments.callee