【发布时间】:2019-12-02 01:15:48
【问题描述】:
您好,我正在尝试将对象转换为代理,而不更改对对象的引用:
这是一个简单的类:
class Foo {
constructor () {
this.a = 'bar'
}
}
const foo = new Foo()
这是我的代理:
const proxy = new Proxy(foo, {
get () {
return 'proxy-bar'
},
set () {
// Don't do anything
return true
}
})
这是该代理的正常使用:
console.log(foo.a) // bar
console.log(proxy.a) // proxy-bar
现在,我想继续使用foo,但具有proxy 的功能。所以我尝试使用Object.assign,它似乎只适用于getter,但不适用于setter。我想念他们的东西吗?
Object.assign(foo, proxy)
console.log(foo.a) // Getter works: proxy-bar
foo.a = 'proxy-proxy-bar'
console.log(foo.a) // Setter does not work: proxy-proxy-bar
【问题讨论】:
-
“将对象转换为代理,而不更改对对象的引用” - 这根本不可能。您首先需要创建
foo作为代理,这是没有办法的。
标签: javascript