2017-03-19 61 views
3

我正在查看Rebound javascript code,看到SpringSystem函數正在被一個空對象擴展。爲什麼用一個空對象擴展一個函數?

var SpringSystem = rebound.SpringSystem = function SpringSystem() { 
    this._springRegistry = {}; 
    this._activeSprings = []; 
    this._listeners = []; 
    this._idleSpringIndices = []; 
    this._boundFrameCallback = bind(this._frameCallback, this); 
}; 

extend(SpringSystem, {}); 

extend樣子:

function extend(target, source) { 
    for (var key in source) { 
     if (source.hasOwnProperty(key)) { 
      target[key] = source[key]; 
     } 
    } 
} 

是什麼第一extend通過擴展一個空對象實現的呢?這是我的理解,一個空對象沒有任何東西hasOwnProperty(key)

我錯過了什麼?

+1

我的答案是這個函數的目的是通過複製javascript的'proto'將這個函數「轉換」爲一個對象。我不確定,但這對我來說是這條線的唯一目標。 –

+0

我不確定這對我有意義。我在節點中的經驗是空對象沒有任何屬性。這可能會在瀏覽器中有所不同嗎? – Brad

+4

事實上,代碼什麼都不做。我的猜測是,它只是將來對代碼進行修改的一個佔位符,因此如果應該將其他成員添加到對象中,它應該在那裏發生。 – trincot

回答

4

你什麼都沒漏,代碼沒有用處。它看起來像一個類模板中的剩餘部分,注意其他類和所有原型都使用此模式。

這也是爲什麼it has been removed in 2014

+0

感謝您指出這一點。當我第一次看到這些時,我開始懷疑自己學到了什麼。 – Brad

相關問題