Mam funkcję tablicy iteratora:JavaScript: nieoczekiwany wynik typeof
function applyCall(arr, fn) {
fn.call(arr[0], 0, arr[0]);
}
i trochę kodu
var arr1 = ['blah'];
applyCall(arr1, function (i, val) {
alert(typeof this); // object WHY??
alert(typeof val); // string
alert(typeof(this === val)) // alerts false, expecting true
});
Dlaczego typeof this
wewnątrz funkcji inline object
zamiast string
?
jsfiddle here
Tylko notatkę. Wierzę, że ostatnie zdanie powinno brzmieć "typeof this === typeof val' zamiast" typeof (this === val) ' – techfoobar
Ponieważ' this' nie odnosi się już do 'arr1'. Po użyciu 'this' w funkcji odwołuje się do' funkcji', która jest obiektem. –
@icanc - To nie jest prawda. Pierwszy argument funkcji .call() decyduje o tym, co to jest wewnątrz funkcji. – techfoobar