在javascript中,當使用加號(+)連接字符串和 另一個變量時,如果該變量不是string
,則該變量將隱式調用它的toString
方法。爲了驗證這一點,我創建了一個名爲Apple的構造函數。爲什麼修改Number.prototype.toString不起作用?
function Apple(name) {
this.name = name;
}
Apple.prototype.toString = function() {
console.log('Apple.prototype.toString called.');
return this.name;
};
var apple = new Apple('Thai apple');
var msg = apple + ' tastes good.'
console.log(msg)
它的工作原理如我所料:計算apple + ' tastes good'
時, Apple.prototype.toString
被調用。 然後我在Number
類型上做了類似的實驗。
Number.prototype.num2str = Number.prototype.toString;
Number.prototype.toString = function() {
console.log('new Number.prototype.toString called.');
return this.num2str();
}
var msg = 'num = ' + 123;
console.log(msg);
運行後,我注意到沒有調用Number.prototype.toString
。 我很困惑。爲什麼它不像前面的例子那樣工作?
哦;對不起,我會刪除我的評論,然後〜 –