我發現在JavaScript中的特殊性(或者也許是我的瀏覽器的想法):爲什麼字符串變成`this`時會被破壞?
var s = "Hello, world";
function foo(arg)
{
console.log(arg);
console.log(this);
}
foo.call(s, s);
運行與Firebug的控制檯上啓用,我得到:
Hello, world
String { 0="H", 1="e", more...}
爲什麼字符串自動獲得關在成爲this
傳遞給foo
之前變成奇怪的對象?
我把它稱爲一個奇怪的對象的原因是因爲jQuery對它扼殺。例如:
$.each(["one", "two", "three"], function(i, x) {
$('<p></p>').text(x) .appendTo('body'); // Works
$('<p></p>').text(this).appendTo('body'); // Doesn't work
});
好吧,'this'應該指'window',如果它不在一個函數。 – mc10
有趣的行爲,假設涉及傳遞不正確數量的參數。如果可變數目的參數,我使用參數對象。 –