繁体   English   中英

toString()如何在javascript中工作?

[英]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方法。 从规格

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

    一种。 返回由ToString(lprim)和ToString(rprim)串联而成的字符串。

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

在后面的代码段中, toString仅返回对象的默认值。

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

(*更准确:您没有重写本机属性,而是为具有相同名称的对象创建了一个自己的属性,该名称用于代替从原型链中搜索本机属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM