מה הבדל בין Apply, Call ,Bind ב Javascript
מה הבדל בין Apply, Call ,Bind ב Javascript
כל המתודות האלה משנים this של פונקציה הנוכחית.
Apply ו Call דומים. כאשר Apply מקבל מערך ו Call מאפשר להעביר פרמטרים מופרדים ע''י פסיק. הם ישר מבצעים את הפונקציה.
Bind - מייצר פונקציה חדשה וגם מאפשר להעביר פרמטרים.
- var person1 = {firstName: 'Maria', lastName: 'Butusov'};
- var person2 = {firstName: 'Jhon', lastName: 'Doe'};
- function say(greeting) {
- console.log(greeting + ' ' + this.firstName + ' ' + this.lastName);
- }
- /*call method*/
- say.call(person1, 'Hello'); // Hello Maria Butusov
- say.call(person2, 'Hello'); // Hello John Doe
- /*apply method*/
- say.apply(person1, ['Hello']); // Hello Maria Butusov
- say.apply(person2, ['Hello']); // Hello John Doe
- /*bind*/
- var sayHelloMaria = say.bind(person1);
- var sayHelloJhonDoe = say.bind(person2);
- sayHelloMaria(); // Hello Maria Butusov
- sayHelloJhonDoe(); // Hello John Doe