2012-06-13 3 views
0

가능한 중복 :
Determine original name of variable after its passed to a function
Get the reference name of an object?자바 스크립트에서 변수 이름을 얻으려면 어떻게해야합니까?

하지 이것을 설명하는 방법을 정확히 확인하십시오. 객체 자체에서 변수 이름의 문자열 값을 얻으려고합니다. 예를 들어

:

var MyObject = function(){ 
    var that = this; 

    that.alertMyName = function(){ 
    var name_of_instance = that.__name__; 
    alert(name_of_instance); //hoping to retreive a string containing 'var1'? 
    } 

}; 

var var1 = new MyObject(); 
var1.alertMyName(); 
+2

생각을위한 음식 :이 코드에서 인스턴스의 "이름"은 무엇입니까? 'var var1 = 새로운 MyObject(); var var2 = var1; var1.alertMyName(); var2.alertMyName();''var1'과'var2'는 모두 * 같은 객체 *를 가리 킵니다. – cdhowie

+0

변수 이름에 로직을 묶는 것은 거의 항상 (나는 * 거의 *라고 말하고 있지만 유효한 유즈 케이스는 아직 보지 못했다) 끔찍한 생각이다. –

+0

이 질문에 대한 좋은 토론은 http://stackoverflow.com/questions/789675/how-to-get-class-objects-name-as-a-string-in-javascript – sachleen

답변

0

당신이 자바 스크립트의 객체에

for (x in obj){}

할 경우는, x는 객체 속성/변수 이름의 이름을 보관 유지, 난 당신이 얻을 수 있다고 생각합니다 원하는 방식 :

+0

아니요, 할 수 없습니다. 이것은 객체의 속성을 열거하고 객체가 참조하는 변수의 이름을 포함하지 않습니다. – cdhowie

+0

나는 너의 요점을 보았다, 너의 요점은 내가 만든 것과 다르다. 새로운 MyObject ("name")에서와 같이 문제를 해결할 수는 있지만 각 인스턴스에 이름 속성을 만들 수 있습니다. – Ryan

+1

@Ryan * 문제를 다시 정의 할 수 있지만 명시된 문제를 해결하지는 못합니다 :) –

3

개체가 참조 된 변수의 이름을 결정할 수는 없지만이 예제에서는 그렇지 않습니다. 너. 동일한 객체를 참조하는 많은 변수가있는 경우를 생각해보십시오.이 경우 반환 될 것으로 예상되는 내용은 무엇입니까? 변수가없는 경우이 객체를 전혀 참조하지 않습니까? (식 new MyObject().alertMyName() 고려 - 객체의 이름이 있어야 할 무엇을?)

를 사용하면 객체에 이름을 부여하려면, 그것은 명시합니다

var MyObject = function(name){ 
    var that = this; 

    that.alertMyName = function(){ 
    alert(name); 
    } 

}; 

var var1 = new MyObject("var1"); 
var1.alertMyName(); 
0

확인 아,이 쉽다 (거의 같이 불가능한). 코드를 출력 한 다음 함수 호출을 읽은 다음 변수 이름을 적어 둡니다.

코드가 좀 더 복잡해 지지만 가장자리의 경우에는 여전히 실행 가능합니다. 해당 문서가있는 곳을 명시 적으로 알고 있어야하는 함수를 호출하는 문서를 파싱해야합니다. $.ajax 호출을 사용하면 전체 호출 스크립트 또는 페이지를 변수에로드 한 다음 사용 된 변수 이름을 사용하여 함수 호출을 찾을 때까지 슬라이딩 창으로 구문 분석 할 수 있습니다. 그러나 발견 된 함수 호출이 현재 인스턴스와 상관 관계가 있는지 확인해야합니다.

관련 문제