2017-03-19 3 views
3

私はRebound javascript codeを見て、SpringSystem関数が空のオブジェクトで拡張されているのを見ました。 extendがどのように見える空のオブジェクトで関数を拡張するのはなぜですか?

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

extend(SpringSystem, {}); 

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

関連する問題