我发现在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
有趣的行为,假设涉及传递不正确数量的参数。如果可变数目的参数,我使用参数对象。 –