1

こんにちは、javascript プロトタイプ チェーンのトップ レベル (またはトップから任意の数のレベル) のプロトタイプを取得する「より賢い」方法があるかどうか疑問に思っていました。

問題は次のとおりです。

  var a = Object.create(Object.prototype, {'class' : {value : 'a'}});
  var b = Object.create(a, {'class' : {value : 'b'}});
  var c = Object.create(b, {'class' : {value : 'c'}});

ループを記述せずに c から a に到達できますか?

  var topClass = c;
  while (Object.getPrototypeOf(topClass) !== Object.prototype) {
     topClass = Object.getPrototypeOf(topClass);
  } 
  console.log('expect this to be true: '+ a === topClass);
4

1 に答える 1

2

ループを記述せずに c から a に到達できますか?

いいえ、あなたはあなたがしたことをしなければなりません。一番下まで(または一番上まで、好きな用語で)歩いてください。

ブラウザのコンテキストでこれを行う場合、引用したコードが別のウィンドウで作成されたオブジェクトで動作している場合、ループは確実に機能しないこともおそらく指摘する価値がありますObject.prototype。別のウィンドウ===のではありません。Object.prototypeしかし、それが重要なのは、A) ブラウザでこれを実行している場合、および B) 別のウィンドウからオブジェクトに対して実行している可能性がある場合です。(それが重要な場合は、戻ってくるまでループして、2 レベル前がチェーン内の最初の非プロトタイプであるnullと想定できます...)Object

于 2013-04-26T16:18:16.487 に答える