2016-07-13 43 views
0

我有一個承諾,從服務器返回對象數組。 用原型屬性定義一個對象並設置這些對象的最佳方式是如何將每個對象排列爲使用此原型以節省內存?使用原型來設置對象數組

例如

getItems().success(function(data) { 
    var items = data; 
}) 

比方說,這個對象有詳細的屬性,它可能有一個值,或者是空的。 所以,如果我將使用空的所有對象可以使用相同的參考記憶的地方詳細性質的原型......

希望我理解原型的想法不對,而我已經成功地解釋一下......

+0

可否請你提供使用的,你用你的承諾,要在其中添加屬性原型的功能代碼的完整片段....所以我們可以更具體的感謝! – GibboK

+0

您是否希望將承諾響應保存在將由任何對象使用的變量中? –

+1

你能更具體嗎?提供'data'將包含的樣本數據,然後指出具體示例中您覺得內存不被有效使用的地方。注意:「空」不是JavaScript術語。你的意思是「未定義」? 'null'? – trincot

回答

-1

一般情況下,你可以使用下面的代碼將屬性添加到你的函數/對象的原型。

yourObject.prototype.yourProperty = 'yourValue'; 

承諾是我的天性是異步的,所以當你的承諾,滿足你可以改變你的對象屬性在prototype的價值,這反過來將更新您的所有對象實例。使用本機無極

一個普通的例子:

var Class = function() {}; 
 
Class.prototype.data = 1; 
 

 
new Promise(function(resolve, reject) { 
 
setTimeout(function() { 
 
    resolve(10); 
 
}, 3000); 
 
    }) 
 
    .then(function(result) { 
 
Class.prototype.data = result; 
 
console.log('a fulfilled', a.data); 
 
console.log('b fulfilled', b.data); 
 
    }) 
 

 
var a = new Class(); 
 
var b = new Class(); 
 
console.log('a pending', a.data);

更多Promise

更多Object.protoype

+0

如果我在請求和請求仍在進行之後立即調用它,該怎麼辦;) –

+0

@IsmailRBOUH define yourObject.prototype.data = null;當Promise被實現時設置yourObject.prototype。數據=數據; – GibboK

+0

這個任務是異步的,我需要這個值讓我們說同步!我不認爲你明白了! –

1

希望我理解原型想法正確

號它不保存數據的內存。

原型對象只能用於由所有實例共享的屬性,而不是「某些實例擁有它,有些不具有」時共享的屬性。這種共享屬性的典型例子是方法。

除非你沒有與內存中的任何實際問題,don't try to optimise anything這裏。

+0

我完全同意你的最新陳述「除非你沒有任何關於記憶的實際問題,否則不要嘗試優化任何東西」。 – GibboK