如果我指定
displayUL = new displayListMaker({{ $displays }});
如果可能的话,如何获得变量displayUL
var displayListMaker = function(displays){
像
this.self = wantthevariable
所以我可以生成自称为
的htmlreturn '<a onclick="'+this.self+'.callAFunc(withdata)">call myself :)</a>'
答案 0 :(得分:1)
你无法获得最终将在构造函数中引用对象的变量的名称,因为最终可能会有多个对同一对象的引用,所以它怎么知道要使用哪个?
如果这是一个内联处理程序属性,那么无论如何具有局部变量的名称都无关紧要,因为处理程序体在全局变量范围内执行。
如果displayUL
变量是全局的,一个解决方案可能是将全局名称传递给构造函数,并让它在那里添加全局变量,并将名称编码到字符串中。
new displayListMaker($displays, "displayUL");
var displayListMaker = function(displays, name) {
window[name] = displays;
'<a onclick="' + name + '.callAFunc(withdata)">call myself :)</a>'
// ...and so on
虽然我冒昧地猜测你的问题完全围绕着onclick="..."
属性。直接创建DOM元素并使用elem.onclick = func...
属性,同时保持对对象的闭包引用可能是您真正需要的。
new displayListMaker($displays);
var displayListMaker = function(displays, name) {
var that = this;
var elem = document.createElement("a")
elem.innerHTML = "call myself :)"
elem.onclick = function() {
that.callAFunc(withdata);
}
// ...and so on