Conţinut
Funcția Bind
bind
este o metodă pe prototipul tuturor funcțiilor din JavaScript. Vă permite să creați o nouă funcție dintr-o funcție existentă, să schimbați funcția nouă this
context și furnizați orice argumente cu care doriți să fie apelată noua funcție. Argumentele oferite bind
va precede orice argumente care sunt transmise noii funcții atunci când este apelată.
Folosind bind
a schimba this
într-o funcție
Primul argument furnizat pentru bind
este this
contextul la care va fi legată funcția. Dacă nu doriți să modificați valoarea this
trece null
ca primul argument.
Vi se atribuie să scrieți cod pentru a actualiza numărul participanților pe măsură ce ajung la o conferință. Creați o pagină web simplă care are un buton care, atunci când faceți clic, crește numOfAttendees
proprietate pe obiectul confrence. Folosiți jQuery pentru a adăuga un buton de clic la butonul dvs., dar după ce faceți clic pe buton obiectul confrence nu s-a schimbat. Codul dvs. ar putea arăta cam așa.
var nodevember = {
numOfAttendees: 0,
incrementNumOfAttendees: function() {
this.numOfAttendees++;
}
// other properties
};
$('.add-attendee-btn').on('click', nodevember.incrementNumOfAttendees);
Aceasta este o problemă obișnuită atunci când lucrați cu jQuery și JavaScript. Când faceți clic pe butonul this
cuvânt cheie din metoda pe care ați trecut-o la jQuery’s on
metoda face referire la buton și nu la obiectul conferinței. Puteți lega this
contextul metodei dvs. pentru a rezolva problema.
var nodevember = {
numOfAttendees: 0,
incrementNumOfAttendees: function() {
this.numOfAttendees++;
}
// other properties
};
$('.add-attendee-btn').on('click', nodevember.incrementNumOfAttendees.bind(nodevember));
Acum, când se face clic pe buton this
face referire la nodevember
obiect.
Furnizarea de argumente unei funcții cu bind
Fiecare argument a trecut la bind
după primul va preceda orice argument transmis atunci când funcția este apelată. Acest lucru vă permite să aplicați în prealabil argumente la o funcție. În exemplul de mai jos, combineStrings
ia două șiruri și le concatenează împreună. bind
este apoi folosit pentru a crea o funcție care oferă întotdeauna „Cool” ca primul șir.
function combineStrings(str1, str2) {
return str1 + " " + str2
}
var makeCool = combineStrings.bind(null, "Cool");
makeCool("trick"); // "Cool trick"
Ghidul pe această referință are mai multe informații despre modul în care this
referințele cuvintelor cheie se pot schimba.
Mai multe detalii despre bind
metoda poate fi găsită pe Mozilla Documente MDN.
Lungimea funcției
length
proprietatea de pe obiectul funcție deține numărul de argumente așteptat de funcție atunci când este apelat.
function noArgs() { }
function oneArg(a) { }
console.log(noArgs.length); // 0
console.log(oneArg.length); // 1
Sintaxă ES2015
ES2015, sau ES6 așa cum se numește în mod obișnuit, a introdus operatorul de repaus și parametrii funcției implicite. Ambele adăugiri modifică modul în care length
lucrări de proprietate.
Dacă fie operatorul de repaus, fie parametrii impliciți sunt utilizați într-o declarație de funcție, length
proprietatea va include doar numărul de argumente în fața unui operator de repaus sau a unui parametru implicit.
function withRest(...args) { }
function withArgsAndRest(a, b, ...args) { }
function withDefaults(a, b = 'I am the default') { }
console.log(withRest.length); // 0
console.log(withArgsAndRest.length); // 2
console.log(withDefaults.length); // 1
Mai multe informații despre Function.length
pot fi găsite pe Documente MDN ale Mozilla.
#functionprototypebind #și #functionprototypelength #în #JavaScript #Explained
function.prototype.bind și function.prototype.length în JavaScript Explained