![](/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.