有没有机会在代理中获得外部范围?
is there any chance to get the outer scope in Proxy?
我正在代理自定义 class 中的一个对象,我想在我的代理对象中访问同一 class 的方法和属性。可能吗?
我认为有一种方法可以绑定上下文,但它在应用、调用或绑定方面对我不起作用。
如有任何建议,我们将不胜感激!
class MyClass {
constructor() {
this.state = new Proxy(this.initialState, {
set(target, prop, value) {
// some logic goes here
}
})
}
methodIneedToReach() {}
}
我需要它来构建代码并防止混乱。
要么将 this
的值存储在一个名为 that
的变量中,然后在 set
方法中使用 that.methodIneedToReach
,或者更好的是,使用箭头set
的功能。由于 ,他们将使用周围的那个,在这种情况下,就是您的 class:
的实例
class MyClass {
constructor() {
this.state = new Proxy(this.initialState, {
set: (target, prop, value) => { // set is an arrow function
this.methodIneedToReach(); // works because 'this' inside here points to your class
}
})
}
methodIneedToReach() {}
}
演示:
class MyClass {
constructor() {
this.initialState = { message: "Hello World!" };
this.state = new Proxy(this.initialState, {
set: (target, prop, value) => {
this.methodIneedToReach();
}
})
}
methodIneedToReach(value) {
console.log("'methodIneedToReach' is called");
}
}
let inst = new MyClass();
inst.state.message = "Bye world!";
我正在代理自定义 class 中的一个对象,我想在我的代理对象中访问同一 class 的方法和属性。可能吗?
我认为有一种方法可以绑定上下文,但它在应用、调用或绑定方面对我不起作用。
如有任何建议,我们将不胜感激!
class MyClass {
constructor() {
this.state = new Proxy(this.initialState, {
set(target, prop, value) {
// some logic goes here
}
})
}
methodIneedToReach() {}
}
我需要它来构建代码并防止混乱。
要么将 this
的值存储在一个名为 that
的变量中,然后在 set
方法中使用 that.methodIneedToReach
,或者更好的是,使用箭头set
的功能。由于
class MyClass {
constructor() {
this.state = new Proxy(this.initialState, {
set: (target, prop, value) => { // set is an arrow function
this.methodIneedToReach(); // works because 'this' inside here points to your class
}
})
}
methodIneedToReach() {}
}
演示:
class MyClass {
constructor() {
this.initialState = { message: "Hello World!" };
this.state = new Proxy(this.initialState, {
set: (target, prop, value) => {
this.methodIneedToReach();
}
})
}
methodIneedToReach(value) {
console.log("'methodIneedToReach' is called");
}
}
let inst = new MyClass();
inst.state.message = "Bye world!";