적용 및 바인딩을 호출하십시오. 그리고 그들이 어떻게 다른지.
일상적인 용어를 사용하여 전화를 배우고 적용 할 수 있습니다.
your_scooter , your_car and your_jet
동일한 메커니즘 (방법)으로 시작하는 3 개의 자동차 가 있습니다. automobile
메소드를 사용 하여 객체 를 만들었습니다 push_button_engineStart
.
var your_scooter, your_car, your_jet;
var automobile = {
push_button_engineStart: function (runtime){
console.log(this.name + "'s" + ' engine_started, buckle up for the ride for ' + runtime + " minutes");
}
}
언제 전화를 걸고 적용하는지 알 수 있습니다. 당신이 엔지니어이고, 당신이 가지고 있다고 가정하자 your_scooter
, your_car
하고 your_jet
있는이 push_button_engine_start와 함께 제공되지 않은 당신이 제 3자를 사용하고자하는 push_button_engineStart
.
다음 코드 줄을 실행하면 오류가 발생합니다. 왜?
//your_scooter.push_button_engineStart();
//your_car.push_button_engineStart();
//your_jet.push_button_engineStart();
automobile.push_button_engineStart.apply(your_scooter,[20]);
automobile.push_button_engineStart.call(your_jet,10);
automobile.push_button_engineStart.call(your_car,40);
위의 예는 your_scooter, your_car, your_jet에 자동차 오브젝트의 기능을 성공적으로 제공합니다.
더 깊이 들어가 보자
여기서는 위의 코드 줄을 나눕니다.
automobile.push_button_engineStart
우리가 사용되는 방법을 얻도록 돕고 있습니다.
또한 점 표기법을 사용하여 apply 또는 call을 사용합니다.
automobile.push_button_engineStart.apply()
이제 두 개의 매개 변수를 적용하고 호출하십시오.
- 문맥
- 인수
여기에서 코드의 마지막 줄에 컨텍스트를 설정합니다.
automobile.push_button_engineStart.apply(your_scooter,[20])
call과 apply의 차이점은 apply 는 배열 형식의 매개 변수를 받아들이고 call은 단순히 쉼표로 구분 된 인수 목록을 받아 들일 수 있다는 것입니다.
JS 바인드 기능이란 무엇입니까?
바인드 함수는 기본적으로 무언가의 컨텍스트를 바인드 한 후 나중에 실행할 수 있도록 변수에 저장합니다.
이전 예제를 더 좋게 만들어 봅시다. 앞서 우리는 자동차 객체에 속하는 방법을 사용하여 장비를 사용했습니다 your_car, your_jet and your_scooter
. 이제 우리가 원하는 push_button_engineStart
실행 후반에 개별적으로 자동차를 시동 하기 위해 별도의 별개 를 제공하고 싶다고 상상해보십시오 .
var scooty_engineStart = automobile.push_button_engineStart.bind(your_scooter);
var car_engineStart = automobile.push_button_engineStart.bind(your_car);
var jet_engineStart = automobile.push_button_engineStart.bind(your_jet);
setTimeout(scooty_engineStart,5000,30);
setTimeout(car_engineStart,10000,40);
setTimeout(jet_engineStart,15000,5);
여전히 만족하지 않습니까?
눈물 방울로 명확하게합시다. 실험 할 시간. 함수 응용 프로그램을 호출하여 적용한 다음 함수 값을 참조로 저장해 보겠습니다.
아래의 실험은 호출 및 적용이 즉시 호출되기 때문에 실패하므로 바인드 함수가 쇼를 훔치는 변수에 참조를 저장하는 단계에 결코 도달하지 않습니다.
var test_function = automobile.push_button_engineStart.apply(your_scooter);