2014-09-16 1 views
0

Я хочу узнать, как получить имя переменной, связанную с объявлением объекта. Легче описать эту проблему на примере, так:Как узнать объекты javascript, связанные с именем переменной

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(); 

Так что мой вопрос, как узнать «varNeedToKnow», чтобы заполнить this.NeedToKnow внутри объекта?

Возможно ли это?

+0

возможно дубликат [Как «это» ключевое слово работа в JavaScript литерал объекта?] (Http://stackoverflow.com/questions/133973/how-does-this-keyword-work-within-a -javascript-object-literal) – Teemu

+0

Тогда что, если я изменю имя переменной, и есть миллионы строк кода? – LuVe

+0

связывает функции с элементом вместо использования inline 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

 Смежные вопросы

  • Нет связанных вопросов^_^