2014-09-16 2 views
0

개체 선언과 연결된 변수 이름을 얻는 방법을 알고 싶습니다. 쉽게 이 문제 때문에, 예를 들어입니다 설명하기 : 변수 이름과 관련된 자바 스크립트 개체를 찾는 방법

function MyObject(){ 

    this.NeedToKnow = ""; 

    this.getLink = function() { 
     html = '<a href="javascipt:' +this.NeedToKnow+'.doIt(passVal) ">M</a>'; 
     return html; 
    } 

    this.doIt = function(passVal) { 
     //do stuff 
    } 
} 

varNeedToKnow = new MyObject(); 
var html = varNeedToKnow .getLink(); 

그래서 제 질문은, 어떻게 객체의 내부 this.NeedToKnow 채우기 위해 "varNeedToKnow"을 찾을 수 있습니다

?

심지어 가능합니까?

+0

가능한 중복 http://stackoverflow.com/questions/133973/how-does-this-keyword-work-within-a -javascript-object-literal) – Teemu

+0

그렇다면 변수 이름을 변경하면 수백만 줄의 코드가 생깁니 까? – LuVe

+0

인라인 js를 사용하는 대신 요소에 바인딩 기능 – mithunsatheesh

답변

1

DOM/이벤트 핸들러와 직접 상호 작용함으로써 약간 다르게 접근합니다. 이 방법을 사용하면 click 이벤트가 이제 함수 자체에 직접 바인딩되므로 개체의 범위를 벗어나는 함수 이름을 노출 할 필요가 없습니다.

function MyObject(){ 

    this.getLink = function() { 
     var a = document.createElement('a'); 
     a.innerHTML = 'MyLink'; 

     if(a.addEventListener) { 
      a.addEventListener('click', this.doStuff, false); 
     } else { 
      a.attachEvent('onclick', this.doStuff); 
     } 

     return a; 
    }; 

    this.doStuff = function(passVal) { 
     //do stuff 
    }; 
} 

var varNeedToKnow = new MyObject(); 
var element = varNeedToKnow.getLink(); 
//element now contains an actual DOM element with a click event bound to your doStuff function 
[자바 스크립트에서 "이"키워드 작업 개체 리터럴 않습니다 어떻게?]의 (
+0

이것은 좋은 해결 방법이며 내 프로젝트에 유용 할 것입니다. 정말 고마워. – LuVe