如何创建一个JavaScript构造函数,将自定义字符串返回给Object.prototype.toString()?

时间:2013-06-19 05:32:35

标签: javascript

一个小小的益智拼图:

var toString = Object.prototype.toString;

var e = new Error();
console.log(toString.call(e));  // '[object Error]'

function Poodle(){}
var fido = new Poodle();
console.log(toString.call(fido)); // '[object Object]'

如何让最后一行返回'[object Poodle]'

1 个答案:

答案 0 :(得分:2)

该字符串的第二部分是ECMAScript规范中的内部[[class]] defined

您当然可以在对象上定义自己的toString(),但不会因为调用Object.prototype.toString()并设置自定义上下文而受到影响。

你可以覆盖Object.prototype.toString(),但这是非常讨厌的,你不应该这样做。

基本上,如果不编译自己的ECMAScript并制作自定义[[class]],则无法执行此操作。

您不应该依赖该字符串来确定有关您已创建的自定义对象的信息。您可以使用instanceof运算符或constructor属性。