Ich habe ein Szenario, in dem ich eine property
von class
mit Object.defineProperty()
ändern muss. Ich weiß, dass es durch die get()
der descriptor
getan werden kann.Object.defineProperty() innerhalb des Getters
Wenn Sie das Beispiel unten sehen, versuche ich eine function
zurückgeben, die beim Aufruf einen Wert von this
zurückgibt.
Meine Frage ist, muss ich , dass property
wieder für die this
Objekt? Ist es nötig? Wenn ja, warum?
Wenn ich eine Eigenschaft zu einer Klasse definieren, wird this
auch das gleiche Recht widerspiegeln?
Ich kam durch this und ich bin neugierig zu wissen, warum er das tut.
class A {
constructor() {
this.h = 'hello world'
}
hello() {}
}
const des = Object.getOwnPropertyDescriptor(A.prototype, 'hello')
Object.defineProperty(A.prototype, 'hello', {
configurable: true,
get: function(){
//is this necessary
Object.defineProperty(this, 'hello', {
configurable: true,
value:() => this.h,
})
//
return() => this.h
}
})
const n = new A()
console.log(n.hello())
Warum nicht nur diese Eigenschaft außerhalb von Getter definieren? Ihr aktueller Code definiert bei jedem Zugriff auf den Prototyp eine neue Eigenschaft. –
@ SoftwareEngineer171 Außerhalb des Getters erhalten Sie 'this' nicht –
Sie erhalten nicht' this', wenn Sie Pfeilfunktionen verwenden. Stattdessen sollten Sie Standardfunktionen verwenden, damit Sie sie an Ihre Instanz (oder Ihren Prototyp) binden und auf die Instanz "this" zugreifen können. –