Problemă cu 'this' în function.call() în JavaScript
Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
-
Marius
- Mesaje:60
Problemă cu 'this' în function.call() în JavaScript
De ce function.call() se comportă diferit cu '
this' cand nu e adaugat ca argument, în JavaScript?
Rezultatul cu 'this' în test.call() este același atunci când 'this' este înlocuit cu '
undefined'.
Cod: Selectaţi tot
function test(a,b){
console.log(a+b);
}
let args = [1,2]
test.call(this, ...args); // Output: 3
test.call(undefined, ...args); // Output: 3
Dar fara '
this' in test.call(), rezultatul aici e
NaN.
Cod: Selectaţi tot
function test(a,b){
console.log(a+b);
}
let args = [1,2]
test.call(...args); // Output: NaN
MarPlo
Mesaje:4343
Functia
call() necesita primul argument, care e pentru obiectul 'this', daca nu ai nevoie de el, adauga
null.
In codul tau transferi argumentele la parametru 'this' in functia test(), nu la (a, b).
Poti verifica cu
console.log(this) sa vezi diferenta cand 'this' e sau nu adaugat.
Cod: Selectaţi tot
function test(a,b){
console.log(this) // number 1
console.log(a) // number 2
console.log(b) // undefined
console.log(a+b) // 2 + undefined will be NaN
}
let args = [1,2]
test.call(...args);
Primul argument e mereu pentru 'this'.
Daca adaugi un sir ca prim argument, atunci 'this' va fi acel sir.
Cod: Selectaţi tot
function test(a,b){
console.log(this) // "marplo"
console.log(a) // number 1
console.log(b) // number 2
}
let args = [1,2]
test.call('marplo', ...args);
Subiecte similare
- O mica problema de animatie CSS
HTML - XHTML - CSS
Primul mesaj
Noroc, MarPlo!
1. Am vizitat pe twitter un site de animatie, in care website-ul actual se numeste CSS-Challenges,com. In respectivul website, sunt...
Ultimul mesaj
1. Multumesc pentru raspuns.
2. Am inteles raspunsul tau: este un mic examen oferit voluntarilor online, pentru a le afla capacitatile de rezolvare...
- Problema curs de Engleza
Sesizari Erori si Greseli
Primul mesaj
Buna.
Am descarcat cursul curs_eurocor-engleza_incepatori_1-16.rar si cand vreau sa-l dezarhivez imi da eroarea asta:
An error occures whilw...
Ultimul mesaj
Buna,
Poti sa descarci cursul de engleza, nivel intermediar, de la urmatoarele linkuri:
- Lectiile 1-16...