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
-
Eroare: member function fetch_array() on bool
PHP - MySQL - XML
Primul mesaj
Am creat sintaxa asta in home php
Cand este setat 1 in baza de date la userul respectiv ar trebui sa imi arate true iar cand e 0 sa imi arate false....
Ultimul mesaj
Era o problema unde nu trebuia adaugat acel cod, am rezolvat ,mersi
-
Produsul Dot a doua array in Javascript
JavaScript - jQuery - Ajax
Primul mesaj
Cum se poate implementa eficient o metoda dotProduct (pentru a obține produsul Dot din două array) fără a importa alte biblioteci Javascript?
De...
Ultimul mesaj
Iată o metodă.
Se foloseste funcția map() pentru a crea un nou array cu rezultate înmulțite ale fiecărui index, apoi se aplica funcția reduce()...
-
Adaugare apostrof la value in input cu JavaScript
JavaScript - jQuery - Ajax
Primul mesaj
Am un cod JavaScript care adaugă un câmp input pentru utilizator:
var user = O'Conner, John ;
b.innerHTML += <input type='hidden' value=' +...
Ultimul mesaj
Poți să înlocuiesti caracterul cu entitatea lui HTML.
Astfel, pentru apostrof (') poate fi ’ sau ‘
var user = O'Conner,...
-
Lungime obiect JSON in JavaScript
JavaScript - jQuery - Ajax
Primul mesaj
Am convertit un tabel din baze de date într-un obiect JSON.
Aceasta este, în esență, un array bidimensional, fiecare înregistrare fiind pe cate un...
Ultimul mesaj
Poti sa folosesti Object.keys pentru a obține lista de chei din obiect ca un array, apoi obții cu 'length' lungimea din el:...
-
Afisare cu animatie continut adaugat cu JavaScript
JavaScript - jQuery - Ajax
Primul mesaj
Ideea pe care vreau sa o fac e că la clic pe un buton, conținutul vechi e înlocuit cu nou conținut HTML adăugat cu javascript.
Vreau ca noul...
Ultimul mesaj
Pentru a declanșa o tranziție CSS, modifica starea CSS după ce ai introdus codul HTML. Poți face asta schimbând o clasă (la container sau la un...
-
Sare peste index-uri in bucla for…of in Javascript
JavaScript - jQuery - Ajax
Primul mesaj
In vechea bucla for() in JavaScript, ca sa sar peste index-uri faceam asa:
for (let i=0; i<bla.length; i+=2){
//...
}
Astfel, pentru...
Ultimul mesaj
Poti sa adaugi o conditie if() in bucla for…of, ca in urmatorul exemplu (indexul initial e pastrat).
for (const of bla.entries()) {
if (!(i %...