Как обернуть объект с помощью прокси внутри конструктора?
Я это понимаю Proxy
может использоваться для изменения поведения на уровне объекта, например, при получении и установке скобочных обозначений. Все примеры, которые я могу найти, показывают, как построить объект, а затем обернуть его Proxy
вызов. Есть ли способ определить класс Foo
с использованием нотации конструктора класса ES6, так что возвращаемый объект из конструктора уже обернут в Proxy
вместо того, чтобы вызывать конструктор, который также должен вызывать Proxy
по отдельности?
Заранее спасибо.
2 ответа
Если я правильно понимаю ваш вопрос, что вы хотите сделать, это в конструкторе вернуть новый прокси, как это:
class MyClass {
constructor() {
return new Proxy(this, {
// Proxy settings here
})
}
}
Здесь, в этом примере, мы создаем новый класс, а затем вызываем несколько свойств. Затем прокси просто распечатает свойства, которые были вызваны для простоты.
class MyClass {
constructor() {
return new Proxy(this, {
get: (target, key) => {
console.log('I am the key: ' + key)
return Reflect.get(target, key)
}
})
}
}
let c = new MyClass
c.awesome
c.billy
c.superTroopers
if (c instanceof MyClass) {
console.log('I am an instance of MyClass')
} else {
console.log('I am not an instance of MyClass')
}
Насколько я знаю: нет, но вы можете установить prototype
после этого. Что-то вроде этого:
class Thing {
constructor() {
// ...
}
}
Thing.prototype = new Proxy(Thing.prototype, {
get(target, name) {
// ...
}
});