javascript function_js 객체 지향 내부에서 가리키는 this 포인터를 변경하는 세 가지 방법

WBOY
풀어 주다: 2016-05-16 18:28:53
원래의
1598명이 탐색했습니다.

많은 정보를 확인한 후 다음 세 가지 규칙으로 정리했습니다.
규칙 0: 함수 자체는 특수한 유형이므로 대부분의 경우 가능합니다. 변수로 여겨진다.

코드 복사 코드는 다음과 같습니다.

function a()
{
alert(this);
}

또는
var a = function()
{
alert(this)
}

변수를 생성한다고 생각하면 되는데, 이 변수의 값이 함수이다.

규칙 1: 함수가 객체의 키 값인 경우 this는 이 객체를 가리킵니다.
이 규칙은 이해하기 쉽습니다.

코드 복사 코드는 다음과 같습니다.

var a = function(obj)
{
alert(this == obj)
}

var o = {}; .afun = a;
o.afun(o); //true


함수는 변수이지만 객체에 바인딩될 수 있습니다. o 객체.
여기서 바인딩된 개체가 없으면 기본적으로 창 개체를 가리킨다는 점에 유의해야 합니다.
몇 가지 예:

코드 복사 코드는 다음과 같습니다.
function a ()
{
//this == 창
}

함수 a()
{
//this == 창
함수 b()
{
//this == window
}
}

또한 바인딩은 위의 중첩 함수, 바인딩과 같이 전이적이지 않다는 점에 유의해야 합니다. o 객체는 a 함수에 영향을 미치고
b는 여전히 창을 가리킵니다.


규칙 2: new 함수가 호출되면 객체가 생성되며 이는 새로 생성된 객체를 가리킵니다.

var o = new a();
이때 o는 더 이상 함수가 아니지만 실제로는 그런 과정이라고 볼 수 있습니다.
객체 var o = {};를 생성합니다.
이를 o로 지정하고 이를 통해 o를 초기화합니다.


규칙 3: Apply를 통해 포인터를 변경할 수 있습니다
이 Apply의 바인딩은 실제로 Apply의 기능과 유사합니다. 다음 기능 .

코드 복사 코드는 다음과 같습니다.
var a = function(obj)
{
alert(this == obj);
obj.fun = a;
obj.fun(obj);//true


, ok a.apply(obj, [obj]); // true


javascript는 간단히 바인딩할 위치가 없는 경우 기본적으로 창을 바인딩한다고 간주할 수 있습니다.
종합적인 예:
jquery에는 매우 일반적으로 사용되는 함수가 있는데, 이는 쉬운 작업을 위해 루프된 개체 요소를 여기에 바인딩할 수 있습니다.
다음은 간단한 데모입니다.

코드


function Each(tagName, 콜백)
{
var listed = document.getElementsByTagName(tagName)
for (var i = 0; i {
callback.apply(lists[i])
}
}
each("a",
function ()
{
this .style.color = "red";
}
);


내 헤더 탐색의 모든 링크가 빨간색으로 변한 것을 볼 수 있습니다.
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!