假設我有一個簡單的函數定義什麼都不做:function fn() { }
的JavaScript的toString怪癖
現在,當我運行toString(fn)
我得到「的翻譯:」。當我運行toString.call(fn)
時,我得到「[object Function]」。有誰知道爲什麼我在使用call
方法時得到更具體的類型?
編輯:此行爲展示在FireFox通過FireBug控制檯運行。 toString.constructor
和toString.call.constructor
都產生「Function()」。
請詳細說明。你在JavaScript解釋器中調用了這個嗎?哪一個?犀牛? jrunscript?哪個版本? – 2009-12-10 18:10:03
有趣的是,據我所知,toString是一個在Object原型上定義的方法,而不是一個內置函數。所以,問題是,你打電話給誰的toString,它收到了什麼論據? – 2009-12-10 18:10:54
我通過Firebug 1.4.5控制檯運行此代碼。我很好奇的原因是因爲我在jQuery源代碼中看到toString.call像這樣使用並開始試驗。我按照問題所示正確運行代碼(所以不需要「someobject.toString」)。 – 2009-12-10 18:15:33