在JavaScript代碼中,我們目前使用Method1創建了很多對象(請參閱代碼)。使用Method2會更好嗎? (使用.prototype)這些好處是什麼? (Espescially感興趣的執行速度和內存使用情況。)我們應該使用.prototype而不是當前實例化方法嗎?
var exampleObjectFunction1 = function(){ alert(this.exampleProperty1);};
var exampleObjectFunction2 = function(){ this.myFunction1(); };
var exeampleProperties = {
exampleProperty1: 'example',
exampleProperty2: 'example',
};
//Method1: Current instanciation method
function exampleObject1(properties) {
this.exampleProperty1 = properties.property1;
this.examplePropertyX = properties.propertyX;
this.exampleObjectFunction1 = exampleObjectFunction1;
this.exampleObjectFunction2 = exampleObjectFunction2;
};
var exampleObject1 = new exampleObject(properties);
//Method2: Using prototype (better?)
function exampleObject2(properties) {
this.exampleProperty1 = properties.property1;
this.examplePropertyX = properties.propertyX;
};
exampleObject2.prototype.exampleObjectFunction1 = exampleObjectFunction1;
exampleObject2.prototype.exampleObjectFunction2 = exampleObjectFunction2;
var exampleObject2 = new exampleObject2(properties);
編輯:我看到了很多的「構造VS原型」的比較。但是,那裏的「構造函數」代碼通常在構造函數中重新定義函數,而我將它們預先定義在可重用變量中。我認爲這是一個不同的方案,但我不太確定它是否更接近「原型」或「構造函數」。
你不會有多個相同功能的冗餘實現,但多個冗餘引用相同的功能。代碼也更加複雜,因爲您可以通過兩個步驟來定義和分配函數,而不是僅在exampleObject1.prototype'上執行一次,例如'exampleObject2'可以繼承。 – deceze