次のようなクラスを作成すると:
function MyClass(input){
// construct something;
var myInstanceName = ???
}
インスタンスを作成するときにインスタンスの名前が必要になります...
var MyInstance = new MyClass("何かを作る");
ボタンを作成するメソッドがあり、「onclick」はこのインスタンスのメソッドを呼び出す必要があるため、myInstanceName (この場合は="MyInstance") を知る必要があります。
「this.name」を試しましたが、undefined が返されます... この値を取得するにはどうすればよいですか?
編集:これはテスト済みの実際の例です:
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();
}
body 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();
}