>  기사  >  웹 프론트엔드  >  Js에서 이것은 apply().call(),bind()의 문제를 가리킵니다.

Js에서 이것은 apply().call(),bind()의 문제를 가리킵니다.

一个新手
一个新手원래의
2017-10-23 10:02:371412검색

필기 이유: JavaScript의 인기 추세는 점점 거침이 없습니다. 파생된 AngularJs, Node.js 및 BootStrmp는 중소기업을 위한 백엔드 개발에서 이점을 점점 잃어가고 있습니다. IT는 삶을 변화시킵니다. 3년 동안 .Net 프로그래머로 활동하면서 보수적인 태도는 사실 두려움이며, 시대의 발전을 피하는 삶이라는 것을 깊이 느낍니다!

텍스트:

1. apply().call()과 바인딩()은 무엇을 합니까?

이 세 가지는 모두 메소드에서 this의 요점을 변경합니다.

2. 이것은 무엇입니까?

이것은 setTimeout 메소드의 this와 같이 현재 호출하는 메소드의 실행 객체를 나타냅니다.


1 setTimeout(function(){
2                 console.log(this)
3            },1000)

출력 결과:


Window {external: Object, chrome: Object, document: document, Alax: Object, a2: Object…}

Window.setTimeout이 Window 객체의 메서드인 경우 setTimeout이 완전히 호출되기 때문입니다.

다른 객체 정의


var Alax={
         name:'Alax',
         age:27,
         fuc:function(){            
         return this.age;
         }
        }

논리적으로 말하면 console.log(Alax.fun)를 사용하면 27이 출력되어야 하는데 실제 상황은 정의되지 않은 이유는 무엇입니까? Alax 객체 외부에서 호출할 때 실제 객체는 Window이고 Window에는 age 속성이 포함되어 있지 않습니다. 이는 이 포인터가 변경되었으며 다시 지정해야 함을 의미하므로 개념이 완료될 때까지 기다려 생각하는 것을 비교하세요

3. call, apple, 바인딩의 차이점

1. 매개변수 비교

          call의 매개변수 형식은 (thisvalue, arg1) 입니다. , ar2...)

이 값 전달될 this 포인터를 참조합니다. 다음 매개변수는 선택사항이며 메소드의 매개변수에 해당합니다. 전달된 경우 인수로 얻을 수 있습니다.

2. 반환 결과 비교

호출 및 Apple 참조 모든 매개변수를 인수에 전달하고 호출 결과를 직접 반환

Bind는 메서드가 실행된 후 들어오는 값을 반환하고 새로운

함수를 반환하는 것을 의미합니다. 함수는 ()

요약: 위의 내용입니다. 호출 방법은


console.log((Alax.fuc).call(Alax))
console.log((Alax.fuc).apply(Alax))
console.log((Alax.fuc).bind(Alax)())

매개변수 호출 연결


Alax={
         name:'Alax',
         age:27,
         fuc:function(num){               
         this.age+=num               
         return this.age;
         }
    }
 console.log((Alax.fuc).call(Alax,1))
 console.log((Alax.fuc).apply(Alax,[1]))
 console.log((Alax.fuc).bind(Alax)(1))
일 수 있습니다.

위 내용은 Js에서 이것은 apply().call(),bind()의 문제를 가리킵니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.