2010-07-23 6 views
2

한다고 가정 나는 그 두 '이'객체가 참조 무엇이 연산자 자바 스크립트

 myClass = function(){ 
      function doSomething(){ 
       alert(this); // this1 
      } 
     } 
     alert(this); //this2 

같은 자바 스크립트 코드가?

답변

15

글로벌 실행 컨텍스트의 this 값이 전역 객체, 예를 참조 :

기능 코드에 대한
this === window; // true 

, 정말 당신이 함수를 호출 할 방법에 따라 달라집니다, 예를 들어, this 값은

: 참조없이 베이스 객체 함수를 호출

: 때 내재적으로 설정

this 값은 전역 개체를 참조합니다.

obj.method(); 

thisobj 값을 참조한다 :

객체의 속성으로 결합하는 기능을 호출.

new 연산자 사용 :

new MyFunc(); 

thisMyFunc.prototype 상속 새롭게 생성 된 객체를 참조한다. 만약 어느 call 또는 apply 방법을 이용하여 함수를 호출 할 때 또한

하면, 예를 들어, 명시 적 값을 설정할 수

function test(arg) { 
    alert(this + arg); 
} 
test.call("Hello", " world!"); // will alert "Hello World!" 

callapply 차이는 apply으로는 통과 할 수 있다는 것이다 배열 또는 객체 arguments 예하여 인수 올바르게 개수 :

function sum() { 
    var result = 0; 
    for (var i = 0; i < arguments.length; i++) { 
    result += arguments[i]; 
    } 
    return result; 
} 

var args = [1,2,3,4]; 
sum.apply(null, args); // 10 

// equivalent to call 
sum(1,2,3,4); // 10 

경우 01의 첫번째 인수 값또는 applynull 또는 undefined 인 경우 this 값은 전역 개체를 나타냅니다.

(callapply는 수정없이 thisArg 값을 전달하는 곳 ECMAScript를 5로, 앞으로는 변화 참고)

관련 문제