J'ai une fonction iterator tableau:JavaScript: résultat inattendu typeof
function applyCall(arr, fn) {
fn.call(arr[0], 0, arr[0]);
}
et un code
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
});
Pourquoi typeof this
dans la fonction en ligne object
au lieu de string
?
jsFiddle here
Juste une note. Je crois que la dernière instruction devrait être 'typeof this === typeof val' au lieu de' typeof (this === val) ' – techfoobar
Parce que' this' ne fait plus référence à 'arr1'. Une fois que vous utilisez 'this' dans la fonction, il se réfère à cette' fonction' qui est un objet. –
@icanc - Ce n'est pas vrai. Le premier argument de '.call()' décide de ce que 'this' est dans la fonction. – techfoobar