toString()如何在javascript中工作?

时间:2015-02-11 18:06:17

标签: javascript function tostring

"J" + { toString: function() { return "S"; } }; // "JS"

为什么输出“JS?”

当我这样做时:

 "J" + { someFoo: function() { return "S"; } }; // "J[object Object]"

为什么这也不是“JS”?

我正在试图弄清.toString()如何在第一个区块中使用。

由于

1 个答案:

答案 0 :(得分:4)

toString是一个特殊函数(在对象的原型中),当需要对象的字符串化模式时调用它。

在您的情况下,加法运算符调用对象的toString方法。 From the specs

  
      
  1. 如果Type(lprim)是String或Type(rprim)是String,那么

         

    一个。返回串联ToString(lprim)后跟ToString(rprim)的结果的字符串。

  2.   

但是,可以覆盖此本机方法,您已在第一个代码段中完成了*。加法运算符只调用自定义方法,产生你得到的结果。

在后一个代码段toString中只返回对象的默认值。

您可以在很多情况下看到这种情况,例如alert({})从对象的原型调用内部toString方法,因为alert需要一个字符串作为参数。

(*更准确:您没有重写本机属性,而是使用相同的名称为对象创建了自己的属性,而不是从原型链中搜索本机属性。< / p>