필기 이유: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!