如果我创建一个这样的类:
function MyClass(input){
// construct something;
var myInstanceName = ???
}
创建实例时我需要实例的名称...
var MyInstance = new MyClass("Make Something");
需要知道 myInstanceName(在这种情况下为 =“MyInstance”),因为有一个创建按钮的方法,并且“onclick”必须调用此实例的方法。
我试过“this.name”,但它返回未定义......我如何获得这个值?
编辑:这是一个经过测试的工作示例:
function MyClass(WhereGoesTheButton){
this.myName = "Test"; // <-- here is the issue
this.idButton = WhereGoesTheButton;
//
}
MyClass.prototype.createButton = function(){
document.getElementById(this.idButton).innerHTML = '<button id="myId" onclick="'+this.myName+'.callBack(this);">Press Here</button>';
}
MyClass.prototype.callBack = function(who){
alert("Button "+who.id+" has been pressed!");
}
var Test = new MyClass("testArea");
//
function ini(){
Test.createButton();
}
只需将其放在带有正文 onload ini() 和一些 div 的页面中即可创建按钮。
它有效,但欢迎使用具有更好实践的替代方案!
编辑 2:这将完成这项工作,尽管我们仍然没有实例的名称:
var MyClassId = 0;
function MyClass(WhereGoesTheButton){
this.myButtonId = "MyClass"+String(MyClassId);
MyClassId++;
this.idButton = WhereGoesTheButton;
//
}
MyClass.prototype.createButton = function(){
var me = this;
document.getElementById(this.idButton).innerHTML = '<button id="'+this.myButtonId+'" >Press Here</button>';
document.getElementById(this.myButtonId).addEventListener("click", function(e){ me.callBack(this); }, false);
}
MyClass.prototype.callBack = function(who){
alert("Button "+who.id+" has been pressed!");
}
var Test = new MyClass("testArea");
//
function ini(){
Test.createButton();
}