call과 apply와bind의 차이, 손글씨bind 함수

1597 단어

call,apply,bind의 차이


1. 정의:
call apply는 대상의 방법으로 간주하고 호출 방법의 형식으로 함수를 간접적으로 호출한다.함수가 실행될 때의 상하문 (context) (함수체 내부this의 지향) 을 바꾸기 위해 존재합니다.
bind 방법의 주요 역할은 함수를 특정한 대상에 귀속시키는 것이다. 함수 f()가 bind() 방법을 사용하고 대상 o를 매개 변수로 전송하면 이 방법은 새로운 함수를 되돌려준다.
2. 매개변수:
[call, apply bind 동일점]: 첫 번째 실참: 모두 함수를 호출해야 하는 모대상이고 호출해야 하는 상하문이다.첫 번째 실참 후의 매개 변수: 호출 함수의 값this를 전송하는 값입니다. 첫 번째 매개 변수가null,undefined일 때 기본적으로 window를 가리키고 존재하면this의 값은 첫 번째 매개 변수[call,apply bind 차이점]을 가리킵니다. 첫 번째 실참 후의 매개 변수: apply 실참은 수조에 포함됩니다.
f.call(o,1,2) 
f.apply(o, [1, 2]) //apply 

손글씨 bind 함수


bind 함수 이해
bind 방법의 주요 역할은 함수를 특정한 대상에 귀속시키는 것이다. 함수 f()가 bind() 방법을 사용하고 대상 o를 매개 변수로 전송하면 이 방법은 새로운 함수를 되돌려준다.
function f(y){return this.x+y} // step1. 
var o={x:1} //step2. 
var g=f.bind(o)//step3.f o ,  g
g(2) //3

손글씨 bind 함수
단계:
  • Function 원형에 방법bind1
  • 정의
  • 매개 변수를 수조로 분해
  • this(수조 제1항), 함수 참조
  • 가져오기
  • 상하문 가져오기(this):fn1.bind(...)의 fn1, self
  • 로 저장
  • 함수를 되돌려줍니다. 함수에self를 사용합니다.apply 함수 귀속 실현
  • 코드:
    // step0: Function bind1
    Function.prototype.bind1=function(){
        // arguments: 
        console.log(arguments) //[{x: 100},10,20]
        // slice()  。
        // step1: 
        
        const args = Array.prototype.slice.call(arguments)
    
        // step2: this( )
        const this_ = args.shift() //shift()  , 。
    
        //   fn1.bind(...) fn1
        const self = this //this fn1
    
        // 
        return function(){
            return self.apply(this_, args)
        }
    }
    const fn3 = fn1.bind1({
        x: 100
    }, 10, 20)
    
    

    좋은 웹페이지 즐겨찾기