私は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)
がないことは私の理解です。
私には何が欠けていますか?
私の答えは、この関数はjavascriptの 'proto'をコピーしてこの関数をオブジェクトに"変換 "する目的に役立つということです。私は確信していませんが、それは私にはこの行の唯一の目標です。 –
私には分かりません。ノードでの私の経験は、空のオブジェクトにはそれ自身のプロパティがないことです。これはブラウザで異なる可能性がありますか? – Brad
実際、コードは何もしません。私の推測では、それはコードの将来の変更のためのプレースホルダであるため、追加のメンバをオブジェクトに追加する必要がある場合は、その場所で実行する必要があります。 – trincot