![](/img/trans.png)
[英]Javascript toString trick in adding function. How does it work?
[英]How does toString() work in javascript?
"J" + { toString: function() { return "S"; } }; // "JS"
为什么输出为“ JS”?
当我做:
"J" + { someFoo: function() { return "S"; } }; // "J[object Object]"
为什么这也不是“ JS”?
我试图弄清楚.toString()
是如何在第一个块内使用的。
谢谢
toString
是一个特殊函数(在对象的原型中),当需要对象的字符串化模式时调用此函数。
在您的情况下,加法运算符调用对象的toString
方法。 从规格 :
如果Type(lprim)是String或Type(rprim)是String,则
一种。 返回由ToString(lprim)和ToString(rprim)串联而成的字符串。
但是,可以重写此本机方法,您已经在第一个代码段中完成了*。 加法运算符仅调用自定义方法,该方法将产生您得到的结果。
在后面的代码段中, toString
仅返回对象的默认值。
您可以在许多情况下看到这种情况,例如alert({})
从对象的原型中调用内部toString
方法,因为alert
需要一个字符串作为参数。
(*更准确:您没有重写本机属性,而是为具有相同名称的对象创建了一个自己的属性,该名称用于代替从原型链中搜索本机属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.