odkryłem osobliwość w JavaScript (lub może pomysł mojego przeglądarki z IT):Dlaczego łańcuch zostaje okaleczony, gdy staje się "tym"?
var s = "Hello, world";
function foo(arg)
{
console.log(arg);
console.log(this);
}
foo.call(s, s);
Running wyżej z Firebug konsoli włączona, otrzymuję:
Hello, world
String { 0="H", 1="e", more...}
Dlaczego ciąg automatycznie się zamienił do dziwnego obiektu, zanim zostanie this
przekazany do foo
?
Powodem, dla którego nazywam to dziwnym obiektem, jest dławik jQuery. Na przykład:
$.each(["one", "two", "three"], function(i, x) {
$('<p></p>').text(x) .appendTo('body'); // Works
$('<p></p>').text(this).appendTo('body'); // Doesn't work
});
Cóż, "to" powinno odnosić się do 'okna', jeśli nie jest ono wewnątrz funkcja. – mc10
Interesujące zachowanie, zakładając, że przekazuje niepoprawną liczbę argumentów. Używam obiektu arguments, jeśli istnieje zmienna liczba argumentów. –