將實例變量聲明/在樣機值類型(而不是引用類型)初始化值實例變量初始化(即類型的值數字,布爾值,null,未定義或字符串)。這樣可以避免在每次調用構造函數時不必要地運行初始化代碼。 (這不能爲實例變量,其初始值取決於參數構造函數,或其他一些國家在建設的時間內完成。)
,它給的,而不是下面的例子中,:
foo.Bar = function() {
this.prop1_ = 4;
this.prop2_ = true;
this.prop3_ = [];
this.prop4_ = 'blah';
};
用途:
foo.Bar = function() {
this.prop3_ = [];
};
foo.Bar.prototype.prop1_ = 4;
foo.Bar.prototype.prop2_ = true;
foo.Bar.prototype.prop4_ = 'blah';
現在,我創建了foo.Bar WRT的兩個實例第二個方案:
foo = {}
f1 = new foo.Bar()
f2 = new foo.Bar()
,然後進行測試:
f1.prop1_ // gives 4
f1.prop1_ = 5 // changed it
f2.prop1_ // still gives 4
Object.getPrototypeOf(f1) === Object.getPrototypeOf(f2) // true
現在我的問題:雖然f1
和f2
共享相同的原型,每一個原型似乎有不同的範圍,因此,(罩?)他們有自己的prop1_副本;這意味着分開的內存分配發生。爲什麼這是一個性能增益?
我已閱讀,某處,但我必須親身體驗它;) – mehmet