Ho una funzione di matrice iteratore:JavaScript: inaspettato risultato typeof
function applyCall(arr, fn) {
fn.call(arr[0], 0, arr[0]);
}
e un codice
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
});
Perché typeof this
all'interno della funzione inline object
invece di string
?
jsfiddle here
Solo una nota. Credo che l'ultima affermazione dovrebbe essere 'typeof this === typeof val' invece di' typeof (this === val) ' – techfoobar
Perché' this' non si riferisce più al 'arr1'. Una volta che si usa 'this' nella funzione si riferisce a' function' che è un oggetto. –
@icanc - Non è vero. Il primo argomento su '.call()' decide che cosa 'questo' si trova all'interno della funzione. – techfoobar