Вызов Javascript () & amp; apply () против bind ()?

Этот объект ближе к рельсовым лесам: https://github.com/modocache/django-generate-scaffold

725
задан Sun 18 October 2016 в 23:04
поделиться

1 ответ

Основное различие между Вызовом, Примените и Свяжите:

Связывают, будет использоваться, если Вы захотите, чтобы Ваш контекст выполнения прибыл позже в изображение.

Исключая:

var car = { 
  registrationNumber: "007",
  brand: "Mercedes",

  displayDetails: function(ownerName){
    console.log(ownerName + ' this is your car ' + '' + this.registrationNumber + " " + this.brand);
  }
}
car.displayDetails('Nishant'); // **Nishant this is your car 007 Mercedes**

Скажем, я хочу, используют этот метод в некоторой другой переменной

var car1 = car.displayDetails('Nishant');
car1(); // undefined

Для использования ссылки автомобиля в некоторой другой переменной, которую необходимо использовать

var car1 = car.displayDetails.bind(car, 'Nishant');
car1(); // Nishant this is your car 007 Mercedes

, Давайте говорить о более широком применении, связывают функцию

var func = function() {
 console.log(this)
}.bind(1);

func();
// Number: 1

Почему? Поскольку теперь func, связывают с Номером 1, если мы не используем, связывают в этом случае, он укажет на Глобальный объект.

var func = function() {
 console.log(this)
}.bind({});

func();
// Object

Вызов, Подайте заявку, используются, когда Вы хотите выполнить оператор одновременно.

var Name = { 
    work: "SSE",
    age: "25"
}

function displayDetails(ownerName) {
    console.log(ownerName + ", this is your name: " + 'age' + this.age + " " + 'work' + this.work);
}
displayDetails.call(Name, 'Nishant')
// Nishant, this is your name: age25 workSSE

In apply we pass the array
displayDetails.call(Name, ['Nishant'])
// Nishant, this is your name: age25 workSSE
5
ответ дан 22 November 2019 в 21:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: