Привет! Я Prakash, и сегодня я собираюсь поговорить об этой функции. Эта функция имеет большое значение в JavaScript и отличается от любой другой функции. Если вы хотите прочитать о этой функции, прочтите здесь. мы не можем установить значение для этого, но поскольку ES5 представил методы для этой функции, теперь у нас есть несколько вариантов, с которыми можно поиграть. Давайте обсудим два метода этой функции: а) bind () и б) call ().

Связывать() :

Давайте сначала разберемся, что такое метод bind (). Bind () - это метод, который мы используем для установки значения функции this.

Давайте посмотрим на некоторые примеры:

// create an object newNum with 2 properties and their values
Let newNum = { x: 50, y: 40 };
//assign a function to a new object countMe
Let countMe = Function(){console.log(‘ the sum of x+y is : ’+this.x+this.y );}
//now invoke/call the Function
countMe ();//output will be NaN.

Потому что функция внутри объекта countMe не знает значения this, потому что не имеет собственного значения. Теперь из-за этого мы должны соединить функцию добавления с объектом, который содержит значения x и y, для этого процесса мы будем использовать метод привязки.

//with use of bind method + countMe Function
CountMe.bind(newNum)();//output: the sum of x+y is :90.

Да, мы использовали две круглые скобки, здесь мы использовали countMe…. (); Функция и добавленный метод bind () между ними.

Мы можем сделать это по-другому, создав новый объект, который будет содержать этот микшер метода связывания и функции countMe.

//create an object
Var storeMixer =
countMe.bind(newNum);
//call object as function
storeMixer();//output: 90.

Вызов() :

Метод call () принимает объект в качестве аргумента и вызывает эти аргументы один за другим.

Я знаю, что это непонятно, но примеры были бы лучше для понимания, поэтому вот несколько примеров:

//create an Object
Let objNum= {num: 20};
//create object with Function in it.
Var addThis= function(x,y,z){console.log(this.num + x + y + z);}
//now we will use call() with addThis function
AddThis.call(obj,1,4,5);//output: 30.

Другой пример для струнных

//create an object person
Var person= {firstName: ‘Barney’, lastName: ‘Stinson’};
//create a Function
Function intro(myHello){
Console.log(myHello +‘ ’+this.firstName+ ‘ ’+this.lastName);
}
//invoke the function
intro.call(person, ‘have you met ’);
//output : have you met Barney Stinson.

Мы также можем использовать массивы для вызова этой функции.

Пример с массивом

//create a object
Let streetAd= {name: ‘221B Baker Street’};
//create an array
Let direction=[‘left’, ‘right’, ‘straight’];
//create a Function assign it to an object
Var howToGo=function(direction1, direction2, direction3){
Console.log( ‘if you want to reach ’ + streetAd + ‘first go ’+ direction1+ ‘then take ’+ ‘ ’ +direction2 + ‘ ’+ ‘and just go ’ +direction3);
//invoke the function with call
howToGo.call(streetAd,direction[2],direction[0],direction[1]);
//output: if you want to reach 221B Baker Street first go straight then take left and just go right.
}

Это все, что я знаю о методах bind () и call () этой функции. если вы знаете больше, пожалуйста, просветите меня ресурсами в twitter.

Спасибо за чтение.