바인드 사용을 적용 전화

자바 스크립트에서는, 호출 적용한 세 가지 방법을 운반하는 기능 오브젝트를 바인딩,이 방법은 세 가지 주요 역할이 점의 기능을 변경하는 것이다.

apply ,  call , bind 3 점은이 객체의 기능을 변경하는 데 사용된다
apply ,  call , bind 세 번째의 인수가이 객체, 즉 당신이 컨텍스트를 지정하려면,이다 가리하는 것입니다 (각 통화 기능은 특별한 값을 가지고 - 상기 호 컨텍스트 (문맥) - 이는 인 this키);의 값은
apply ,  call , bind 세 파라미터들이 후속 매개 변수 전달을 사용할 수 있으며
bind , 해당 기능을 리턴 호출 나중에 용이하게하기 위해, apply , call 그 호출은 즉시 인 

요구();

구문 :call([thisObj[,arg1[, arg2[, [,.argN]]]]])

정의 : 객체에 대한 메서드 호출, 또 다른 목적은 현재의 객체를 대체하는

설명 : 호출 방법은 메소드를 호출 다른 개체의 대신 사용할 수 있습니다

상기 방법은 초기 thisObj 컨텍스트 변화로부터 새로운 객체가 지정된 오브젝트 컨텍스트의 함수를 호출 할 수있다

thisObj4 개의 케이스 값은 다음 :
(1) 통과 불확정 널 통과하지이 윈도우 오브젝트의 기능을 의미한다
(2) 다른 함수 이름의 전송 기능이 기능 기준점의 기능
(3 ) 통과 문자열 기본 유형의 숫자 또는 부울 타입, 대응하는 오브젝트이 점의 함수와 같은 문자열, 숫자, 부울로서 패키지화 될
. (4) 오브젝트를 전달이 물체 점의 함수

function a(){   
  console.log(this); //输出函数a中的this对象 } function b(){} var c={name:"call"}; //定义对象c a.call(); //window a.call(null); //window a.call(undefined); //window a.call(1); //Number a.call(''); //String a.call(true); //Boolean a.call(b); //function b(){} a.call(c); //Object

function class1(){   
  this.name=function(){ console.log("我是class1内的方法"); } } function class2(){ class1.call(this); //此行代码执行后,当前的this指向了class1(也可以说class2继承了class1) } var f=new class2(); f.name(); //调用的是class1内的方法,将class1的name方法交给class2使用
例子:
function eat(x,y){   
  console.log(x+y); } function drink(x,y){ console.log(x-y); } eat.call(drink,3,2) //5


function Animal(){   
  this.name="animal"; this.showName=function(){ console.log(this.name); } } function Dog(){ this.name="dog"; } var animal=new Animal(); var dog=new Dog(); animal.showName.call(dog); 输出:dog








추천

출처www.cnblogs.com/qingcui277/p/10412984.html