Ich habe einige Regeln gelesen, um festzustellen, was der Wert this
in verschiedenen Szenarien in Javascript ist. Alles war gut, bis das Beispiel unten mich abwarf.Verwenden Sie dies in Javascript
function Person(name){
this.name = name; //this is the object when function used as constructor (as expected)
this.changeName = someFunction(); // produces error
function someFunction(){
this.nickName = this.name+"by"; //this is now the global object and not the instance, thus the name property does not exist.
}
}
var a = new Person ('bob'); //error due to the function in changeName property.
Von dem, was ich verstanden, die this
Variable nimmt den Wert des rufenden Objekts auf, wenn durch Punktschreibweise bezeichnet oder den Wert der neu konstruierten Funktion einnimmt, wenn mit dem new
Schlüsselwort verwendet.
Kann jemand erklären, warum die obige Anweisung in der obigen Funktion das globale Objekt und nicht das neu instanziierte Objekt ist?
Es beantwortet, warum meine Implementierung falsch ist. Vielen Dank. Ich habe bereits die Funktion call() in meinem Fix verwendet, als ich erkannte, dass es sich um das globale Objekt handelte, aber ich brauchte einen Grund zu wissen, warum es das globale Objekt war. Das ist die Erklärung, nach der ich gesucht habe (Y). – alaboudi