2014-09-01 34 views
1

分配給每個Javascript引用的內存量是否取決於引用的對象/函數?換句話說,如果我創建對小對象的引用,然後創建對大對象的引用,那麼引用在分配的內存中會有多少不同?Javascript引用和內存分配差異

例如:

obj1 = {foo: "bar"} 
ref1 = obj1 
ref2 = window 

是什麼ref1ref2之間的內存分配的區別?

爲什麼我問

我在作用域範圍內使用元素存儲jQuery.data()(見下文)引用,我只是想更加了解什麼我保存,我多少存儲。 jQuery.data()是否存儲引用或創建新對象? - (可能是一個新的SO問題)

我CoffeeScript的類:

class Renderer 
    constructor: -> 
    jQuery("<div/>", {class: "myScope", data: @}).appendTo("body") 

在Javascript中:

var Renderer; 
Renderer = (function() { 
    function Renderer() { 
    jQuery("<div/>", { 
     "class": "myScope", 
     data: this 
    }).appendTo("body"); 
    } 
    return Renderer; 
})(); 

回答

2

不,JavaScript的分配不能複製的對象,他們複製引用。 ref1ref2變量之間應該沒有區別,只是它們指向不同的對象。

jQuery.data()是否存儲引用或創建一個新的對象?

他們存儲的參考,這是整個點。它不會放置對象的副本或序列化。