2012-03-09 82 views
1

我的代碼後,很簡單功能成爲對象傳遞給另一個函數

var core ={ 
    f: function(obj){ 
    console.log(toString.call(obj)); 
    } 
} 

需展現[object Function]
如果我通過其他功能像core.f(function(){})

和它相同的,如果我粘貼Chrome檢查器中的core.f
但如果core.f通過腳本加載<script src>

+1

你是怎麼定義'toString'的?如果它是'Object.prototype.toString',那就沒關係。 – 2012-03-09 19:07:56

回答

3

如果你在一個控制檯測試匿名功能變得[object Object],他們可能是在當地toString解析爲Object.prototype.toString

如果您不想要完整的原型路徑,您應該自行創建本地參考。


在Chrome中,我表現出不同的toStringwindow.toString ...

window.toString === toString; // false 

toString參考併成功地解析爲Object.prototype.toString ...

Object.prototype.toString === toString; // true 

..所以你可以看到他們已經創建了自己的本地參考使全球黯然失色

+0

我正在使用'toString'來檢查對象的類型。我應該在'core.f'中使用'window.toString'嗎? – 2012-03-09 19:17:39

+0

不,你應該使用控制檯使用的相同'toString'。這是'Object.prototype.toString'。它是一個通用的'toString()',並且是唯一一個返回內部* [[Class]] *屬性的屬性,可以深入瞭解對象的類型。 – 2012-03-09 19:18:51

+1

謝謝Fixed.it – 2012-03-09 19:19:56

相關問題