Javascript沒有構造函數,請記住javascript基於原型。這是「構造」的一個例子,你可以創建
function Example (firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
Example.prototype.getFullname = function() {
return this.firstname + ' ' + this.lastname;
}
如果你想創建一個構造函數,你必須調用它實例化功能之後。
但是,這是一個更好的結構,你可以使用。我只推薦你需要構造函數和私有函數。否則,用原型聲明的方法使用簡單的結構,可以獲得更好的性能。
var MyObject = (function() {
// Constructor
function MyObject (foo) {
this._foo = foo;
}
function privateFun (prefix) {
return prefix + this._foo;
}
MyObject.prototype.publicFun = function() {
return privateFun.call(this, '>>');
}
return MyObject;
})();
var myObject = new MyObject('bar');
有了這段代碼,你有一個構造函數,但它是一個「私有」函數,所以在實例化對象後你不能覆蓋它。
在這裏,我有一個鏈接,我創建測試型動物結構: https://plnkr.co/edit/qzgWVZlnIFnWl0MoUe5n?p=preview
結果:
測試1:〜15K(私人功能) - 僅建議,如果你想/需要一個私人函數
測試2:〜38k(帶私有函數) - 不推薦,它返回一個非常糟糕的對象。
測試3:〜8K(沒有私有函數) - 推薦,它具有最佳的性能,但是你不能創建一個私有函數,這意味着,任何人都可以調用任何功能:S
[爲什麼不可能改變構造的可能的複製函數原型?](http://stackoverflow.com/questions/9267157/why-is-it-impossible-to-change-constructor-function-from-prototype) – AMACB
'obj.initalize()'? – Oriol
*我想實現的是在類實例化時調用的東西。*然後調用它。 –