Я создал объект, и он прекрасно работает, когда у меня есть один экземпляр объекта.Это не фактический объект, но концепция та же.
function foo(name){
this.name = name;
}
foo.prototype.CreateElement = function(){
var newElement = document.createElement("a");
that = this;
newElement.onclick = function(){
that.SayName(this);
};
document.getElementsByName("body")[0].appendChild(newElement);
}
foo.prototype.SayName = function(LinkObj){
alert(this.name);
LinkObj.href = "http://google.com";
}
Мне сказали, что, сохранив экземпляр this
в переменной (в данном случае that
), я быпо-прежнему получить ссылку на правильный экземпляр объекта для метода SayName
.Это оставило бы this
для представления экземпляра элемента, переданного из onclick
.Кажется, что все это работает правильно только с одним экземпляром, но когда я создаю несколько экземпляров объекта, я получаю последний экземпляр, являющийся экземпляром, предоставленным в событии onclick
.
Я инициализирую два объекта, как это
var ObjOne = new foo("Ted");
ObjOne.CreateElement();
var ObjTwo = new foo("Steve");
ObjTwo.CreateElement();
и когда onclick
срабатывает для ObjOne
, я получаю экземпляр объекта для ObjTwo
, и поэтому this.Name
устанавливается на Steve
.
Кто-нибудьзнаете, как получить правильный экземпляр объекта, когда событие onclick запускается из разных экземпляров?Я предполагаю, что мне нужно связать правильный экземпляр с call
, но я не совсем уверен, как это сделать.
Заранее спасибо и надеюсь, что это не смущает.