2011-04-07 2 views
1

다음과 같은 상황이 있습니다 :객체 함수는 인수로 전달됩니다. 어떻게 그 함수에서 부모 객체에 액세스합니까?

function dog() 
{ 
    this.name = 'Lumpy'; 
    this.getName = function() { 
     return this.name; 
    } 
} 

function show_dog_name(dogname) 
{ 
    alert(dogname()); 
} 

bigdog = new dog(); 
show_dog_name(bigdog.getName); 
function dog() 
{ 
    this.name = 'Lumpy'; 
    this.getName = function() { 
     return this.name; 
    } 
} 

function show_dog_name(dogname) 
{ 
    alert(dogname()); 
} 

bigdog = new dog(); 
show_dog_name(bigdog.getName); 

"this"는 "dog"객체를 의미하지 않으므로 전달 된 함수에서 부모 객체를 얻는 방법.

+1

당신의 CIA 요원을 한 곳에서는 '개'라고하고 다른 곳에서는 '개'라고 부릅니다. –

답변

2
var that = this; 
this.getName = function() { return that.name; }; 
+0

좋은 답변, 추가됨 ​​[jsFiddle example here] (http://jsfiddle.net/swaff/8NWnt/) – Swaff

+0

감사합니다. jsFiddle의 존재에 대해 알고 있습니다 .-) –

1

이 같은 dog을 만들 수 있습니다

function dog() 
{ 
    var name = 'Lumpy'; 
    this.getName = function() { 
     return name; 
    } 
} 

이것은 당신이 getName 항상 name에 액세스 할 수 있도록 클로저를 만들 수 있습니다. 당신이 개 이름이 객체에 '공개'싶은 경우
, 당신은 사용할 수 있습니다

var dogObj = this; 
this.name = 'Lumpy'; 
this.getName = function() { 
    return dogObj.name; 
} 
:

var name = 'Lumpy'; 
this.name = name; 

또 다른 해결책이 getName 함수에 대한 '권리'this 객체는 항상 사용할 수 있도록 구성

+0

'var 이름 '으로 만드십시오. 정말로 글로벌 이길 원하지 않습니까? ;-) –

+0

yes, ok, true, 방금 고정했습니다 –

1

이 시도 :

function dog(){ 
    this.name = 'Lumpy'; 
    var obj=this; 
    this.getName = function() { 
     return obj.name; 
    } 
} 

function show_dog_name(dogname){ 
    alert(dogname()); 
} 

bigdog = new dog(); 
show_dog_name(bigdog.getName); 
관련 문제