이 글은 기본적인 JS 콘텐츠인 이 포인터와 관련 지식 포인트를 공유하고 관심 있는 친구들이 배우고 참고할 수 있습니다.
특정 실제 응용에서는 함수를 정의할 때 이것의 요점을 결정할 수 없지만, 실행 환경에 따라 대략 다음 세 가지 유형으로 나눌 수 있습니다.
1 . 함수가 일반 함수로 호출될 때 전역 객체를 가리킵니다
2. 함수가 객체의 메소드로 호출될 때 이것은 객체를 가리킵니다.3. 생성자, 이것은 새로 생성된 개체를 가리킵니다
예제 1:
window.name = 'myname'; function getName() { console.log(this.name); } getName(); //输出myname
var boy = { name: 'Bob', getName: function() { console.log(this.name); } } boy.getName(); //输出Bob
function Boy(name) { this.name = name; } var boy1 = new Boy('Bob'); console.log(boy1.name); //输出Bob
예 4:
function Boy(name) { this.name = name; return { //返回一个对象 name: 'Jack' } } var boy1 = new Boy('Bob'); console.log(boy1.name); //输出Jack
function Boy(name) { this.name = name; return 1; //返回非对象 } var boy1 = new Boy('Bob'); console.log(boy1.name); //输出Bob
apply는 함수 본문에서 this의 포인터를 두 개 지정합니다. 두 번째 매개변수 첫 번째 매개변수는 호출된 함수의 매개변수 목록을 전달하는 데 사용되는 배열 또는 배열과 유사한 매개변수입니다.
예제 1:
function getInfo() { console.log(this.name+' like '+arguments[0]+' and '+arguments[1]); } var boy1 = { name: 'Bob', age: 12 } getInfo.apply(boy1,['sing','swimming']); //输出Bob like sing and swimming
예 2:
function getInfo() { console.log(this.name+' like '+arguments[0]+' and '+arguments[1]); } var boy1 = { name: 'Bob', age: 12 } getInfo.call(boy1,'sing','shopping'); //输出Bob like sing and shopping
예제 3: 브라우저의 바인딩 방법 시뮬레이션
Function.prototype.bind = function(obj){ var self = this; return function(){ return self.apply(obj,arguments); } }; var obj = { name: 'Bob', age: 12 }; var func = function(){ console.log(this.name+' like '+arguments[0]+' and '+arguments[1]); }.bind(obj); func('sing','shopping');
어떤 경우에는 this에 대한 포인터가 손실될 수 있습니다. 이 때 call, Apply 및 바인딩을 사용해야 합니다. 이것의 포인팅 문제를 변경하십시오.
예제 1: "boy" 객체의 속성으로 "getName" 메소드를 호출하면, 다른 변수가 "getName" 메소드를 참조하는 경우에는 "boy" 객체를 가리키는 것입니다. 일반 함수, 이것은 전역 개체 창을 가리킵니다
var boy = { name: 'Bob', getName: function() { console.log(this.name); } } boy.getName(); //输出Bob var getBoyName = boy.getName; getBoyName(); //输出undefined
var boy1 = { name: 'Bob', age: 12, getInfo: function() { console.log(this.name); function getAge() { console.log(this.age); } getAge(); } } boy1.getInfo(); //Bob //undefined
JavaScript 비디오 튜토리얼
을 방문하세요!위 내용은 JS의 this 포인터와 호출 및 적용 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!