正在讀取Underscore.js以瞭解其方法is[String|Number|...]
如何工作,現在我感到困惑。下劃線作用:爲什麼toString.call('my string')與'my string'.toString()不同,或者,爲什麼是document.toString!=='asd'.toString?
toString.call(obj) == ['object ' + name + ']';
好了,所以,我可以做
>>> toString.call('my string')
"[object String]"
但
>>> 'my string'.toString()
"my string"
我敢在這裏輸了!在第一次調用我有:
>>> document.toString === toString
true
而且
>>> document.toString === 'asd'.toString
false
所以,我很困惑。我沒有想到這種行爲。
爲了澄清,我承認,'「的字符串」的ToString()'應該* *邏輯迴歸'「的字符串」'。但是這似乎與當你執行'toString.call(「字符串」)'時會發生什麼衝突。 – 2013-03-03 05:06:20
你爲什麼會認爲兩種不同的功能會有相同的行爲?僅僅因爲它們都被稱爲'toString'並不意味着它們應該做同樣的事情...... – Xymostech 2013-03-03 05:11:09
@Xymostech:我會猜想它們都從'Object.prototype.toString'繼承。我不會想到會有多個'toString'的實現。特別是因爲'String.toString()'是非常多的 - 儘管邏輯必要性 - 如果你願意的話,一個「毫無價值」的禁用操作。 – 2013-03-03 05:15:44