通常,當我要檢查的對象的類型(無論它是一個數組,一個節點列表,或其他),我用的是以下幾點:爲什麼`{} .toString.apply(array)`工作?
var arr = [] // I don't do this, but it's for the sake of the example
var obj = {}
obj.toString.apply(arr) // This works
的問題是:爲什麼我不做下列?
var arr = []
{}.toString.apply(arr) // Syntax error: Unexpected token .
我不明白語法錯誤在哪裏。
我可以做一些與[]
不過,以下工作接近:
var nodeList = document.getElementsByClassName('foo')
[].forEach.call(nodeList, function(bar) { console.log(bar) }) // Works
所以...我很困惑。
你忘了()in toString()? – kappa 2012-04-04 07:02:19
不,請參閱@Ray Toal的答案。添加括號會導致語法錯誤(Object沒有方法'apply')。 – 2012-04-04 07:13:28
啊..我沒想到,這是正確的 – kappa 2012-04-04 07:19:38