Почему (не как) я бы использовал метод "связать" для доступа к методу "это"? - PullRequest
1 голос
/ 19 июня 2019

У меня есть следующий код, и я могу получить тот же результат, не используя метод "bind".

var car = { 
registrationNumber: "GA12345",
brand: "Toyota",

displayDetails: function(ownerName){
    console.log(ownerName + ", this is your car: " + this.registrationNumber 
+ " " + this.brand);
    }
}

var myCarDetails = car.displayDetails("Vivian")
var myCarDetails = car.displayDetails.bind(car, "Vivian");

myCarDetails();

Другими словами, можете ли вы показать мне пример из реальной жизни, где нам нужно использовать "связывать "?Я знаю, как использовать bind, я просто не знаю, почему / когда мне нужно его использовать?

1 Ответ

0 голосов
/ 19 июня 2019

Самым распространенным вариантом использования bind является создание функции, которая всегда имеет одно и то же ключевое слово this.

Что это значит?

Bind создает новую функцию, в которой для этого параметра будет задан первый параметр, передаваемый bind ().Посмотрите на этот пример здесь :

var Button = function(content) { 
  this.content = content;
};
Button.prototype.click = function() {
  console.log(this.content + ' clicked');
};

var myButton = new Button('OK');
myButton.click();

var looseClick = myButton.click;
looseClick(); // not bound, 'this' is not myButton - it is the global object

var boundClick = myButton.click.bind(myButton);
boundClick(); // bound, 'this' is myButton

//Print will be: OK clicked. Undefined clicked. Ok clicked
...