在节点中:如果我这样做
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必需的问题吗?
答案 0 :(得分:3)
您可以查看规范:http://es5.github.com/#x15.2.4.2。
基本上,默认实现采用内部[[Class]]
属性并将其连接到结果字符串。由于Shape
和rectangle
都是普通对象,因此其内部[[Class]]
属性为Object
。您必须覆盖toString
或使用构造函数创建对象。
我不认为V8或Node.js会给你任何额外的可能性来覆盖它,但我不确定。