我想寫一個像jQuery這樣的函數,並使用javascript調用函數。Javascript調用類型
function each(array, callback) {
for (var i=0; i<array.length; i++) {
console.log(typeof(array[i])); // Number
callback.call(array[i]);
}
}
each([1,2,3], function() {
console.log(typeof(this)); // Object
});
問題是調用似乎是將數字類型轉換爲對象類型。這會導致console.log調用出現問題。任何人都可以解釋爲什麼會發生這種情況(我的猜測是調用將參數轉換爲Object類型)。爲什麼會這樣做?你能想出一種解決方法或防止這種情況嗎?
這很古怪,但它確實有效。謝謝! –
@Ty .:不客氣。是的,這是不同的。嚴格模式是要走的路,但是您需要確保您爲不支持嚴格的瀏覽器正確處理值。無論哪種方式,回到原語的簡單方法是使用一元'+'運算符。 'console.log(+ this)'http://jsfiddle.net/agXkZ/2/ – user113716