JavaScript prototype 'das' Problem
Dies ist ein follow-up-Frage aus meiner letzten Frage.
Einfache javascript-Prototyp Problem
Ich bin ein bisschen neu mit JavaScript prototype
so sorry für den zweiten post.
Will ich weisen Sie das angeklickte element id
zu den this.name
array.
task.prototype.init=function(){
this.name=[]; //this.name array has to be defined here
for (var i; i<5; i++){
var Link=document.createElement('a');
Link.innerHTML='click';
Link.id=value[i]; //I want to assign the value to the this.name array
Link.href='#'
Link.onclick=this.changeName;
document.body.appendChild(Link);
}
}
task.prototype.changeName=function(){
//How do I push the this.id to the property this.name?
//the code below won't work because this refer to the <a> element.
this.name.push(this.id);
return false;
}
Tipps für die Aufgabe?
- Verwenden Sie nicht CapitalCase für reguläre Variablen.
- Mögliche Duplikate von JavaScript-Callback-Scope und addEventListener und der Umfang dieses und viele andere.
- Ich denke, dass 'name' ist eigentlich reserviert.
callee: function () { arguments: null caller: null length: 0 name: ""
- Hier ist ein Beispiel ohne Verwendung name: jsfiddle.net/kThM2/4
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihren Prototyp ist okay, das problem ist, dass
this
auf event-Handler wird immer das element, das das Ereignis hervorgerufen hat, ausgelöst zu werden. In JavaScript, die den Wert vonthis
innerhalb einer Funktion hängt davon ab, wie die Funktion aufgerufen wird.Wenn Sie wollen
this
gebunden zu sein, auf einen bestimmten Wert, können Sie erstellen eine gebundene Funktion mitFunktion.der Prototyp.bind
:Beachten Sie jedoch, dass
bind
ist IE9+ nur. Ein workaround wäre:(Stil Hinweis: ich würde verwenden
link
stattLink
; die Konvention in js zu verlassen Großbuchstaben Initialen, Konstruktoren).Verwenden
bind
, um die gewünschtethis
für diechangeName
callback: