2014-07-11 1 views
0

프로토 타이핑 할 때 가장 좋은 방법은 자바 스크립트 객체 참조를 추적하기 위해 무엇 :는 자바 스크립트 객체 참조를 추적 유지에 올 때 가장 좋은 방법은 무엇

function class1(param) { 
this.param = param; 
self = this; 
} 

class1.prototype.method1 = function() { 
console.log(self.param); 
} 

$('document').ready(function() { 
    object1 = new class1('foo'); 
    object2 = new class1('bar'); 
    object1.method1(); // expected: foo , actual: bar 
    }) 

http://jsfiddle.net/d7q5f/

현재의 자기로 나타납니다 global이며 object2의 생성자에서 재정의됩니다. 누군가 조언을 해줄 수 있다면 정말 고맙겠습니다.

+0

당신은 아마 단지 this''에 대한 참조가 필요합니다. 이 경우 바운드 함수 나 클로저를 여기에 설명 된대로 전달하는 것이 더 좋습니다 : http://stackoverflow.com/a/16063711/1641941 the this variable'에서'var self = this'를 사용하여 self와 동일한 범위가 이제 생성자 범위 내에 있으므로 생성자 외부의 모든 항목에 액세스 할 수 없습니다. – HMR

답변

1

당신은과 같이 this를 사용하여 추적 할 필요가 없습니다

function class1(param) { 
this.param = param; 
} 

class1.prototype.method1 = function() { 
console.log(this.param); 
} 
1
function class1(param) { 
    this.param = param; 
} 

class1.prototype.method1 = function() { 
    console.log(this.param); 
} 

$('document').ready(function() { 
    var object1 = new class1('foo'); 
    var object2 = new class1('bar'); 
    object1.method1(); // expected: foo , actual: foo 
}); 

을이 self 일을 추가 할 이유는 무엇입니까? 당신이 콜백 또는 이벤트 핸들러로 함수 멤버를 통과하려고 할 때

jsfiddle

관련 문제