Привет! Я 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.
Спасибо за чтение.