0

ノード内: もしそうなら

var Shape = {
  x:0,
  y:0
}

var rectangle = Object.create(Shape);

私は得ることができます:

toString.call(rectangle);
//'[object Object]'
toString.call(Shape);
//'[object Object]'
toString.call({});
//'[object Object]'

次のような効果をもたらす方法はありますか:

toString.call(rectangle);
'[object Shape]'

Shape.toString() をオーバーライドするか、新しい Shape.toClassString() メソッドを作成できることは承知していますが、toString.call() の実装に興味があります。これは v8 に必要な問題ですか?

4

1 に答える 1

3

仕様を確認できます:http://es5.github.com/#x15.2.4.2

基本的に、デフォルトの実装は内部[[Class]]プロパティを取得し、それを結果の文字列に連結します。Shapeとは両方ともrectangleプレーンオブジェクトであるため、それらの内部[[Class]]プロパティはObjectです。toStringコンストラクター関数を使用してオブジェクトをオーバーライドまたは作成する必要があります。

V8やNode.jsがこれをオーバーライドするための追加の可能性を提供するとは思いませんが、確かなことはわかりません。

于 2013-02-26T22:42:37.843 に答える