J'ai un scénario où j'ai besoin de modifier un property
d'unen utilisant Object.defineProperty()
. Je sais que cela peut être fait à travers le get()
du descriptor
.Object.defineProperty() à l'intérieur du getter
Si vous voyez l'exemple ci-dessous, j'essaie de retourner un function
qui, lorsqu'il sera appelé, retournera une valeur de this
.
Ma question est, dois-je define
encore property
pour l'objet this
? Est-ce nécessaire? Si oui, pourquoi?
Lorsque je définis une propriété à une classe, this
reflétera également le même droit?
Je suis passé par this et je suis curieux de savoir pourquoi il le fait. J'ai
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())
Votre code actuel définira une nouvelle propriété à chaque accès au prototype. –
@ SoftwareEngineer171 En dehors du getter vous n'obtiendrez pas 'this' –
Vous n'obtiendrez pas ceci si vous utilisez des fonctions de flèche. Au lieu de cela, vous devez utiliser des fonctions standard, vous pouvez donc les lier à votre instance (ou prototype) et accéder à l'instance 'this'. –