オブジェクト構成を使用するのではなく、プロトタイプの継承チェーンを構築するのはなぜですか。チェーンの各ステップのプロトタイプを調べると、コストがかかります。
ダミーのコード例を次に示します。
var lower = {
"foo": "bar"
};
var upper = {
"bar": "foo"
};
var chained = Object.create(lower, pd(upper));
var chainedPrototype = Object.create(chained);
var combinedPrototype = Object.create(pd.merge(lower, upper));
var o1 = Object.create(chainedPrototypes);
var o2 = Object.create(combinedPrototypes);
pd
プロパティ記述子は地獄のように冗長であるため、使用します。
o2.foo
o1.foo
3つではなく2つのプロトタイプチェーンしか上がらないため、より高速です。
プロトタイプ チェーンをたどるとコストがかかるのに、なぜオブジェクト構成を使用する代わりにプロトタイプ チェーンを構築するのでしょうか?
別のより良い例は次のとおりです。
var Element = {
// Element methods
}
var Node = {
// Node methods
}
var setUpChain = Object.create(Element, pd(Node));
var chained = Object.create(setUpChain);
var combined = Object.create(pd.merge(Node, Element));
document.createChainedElement = function() {
return Object.create(chained);
}
document.createCombinedElement = function() {
return Object.create(combined);
}
効率のためにプロトタイプ オブジェクトをマージするコードは見当たりません。連鎖プロトタイプを構築するコードをたくさん目にします。なぜ後者がより人気があるのですか?
考えられる唯一の理由はObject.isPrototypeOf
、チェーン内の個々のプロトタイプをテストするために を使用することです。
構成よりisPrototypeOf
も継承を使用することには明らかな利点がありますか?