我意识到问题的标题可能措辞怪异,因此我在前面表示歉意。 需要明确的是,我指的是这一点:
var IIFE = (function () {
var a = Symbol("a");
function IIFE() {
this["a"] = null;
}
IIFE.prototype = {
get a() { return this[a]; },
set a(n) { this[a] = n; }
}
return IIFE;
}());
var iife = new IIFE;
我想使用数组动态添加'b'和'c':
var arrProps = ['b','c'];
IIFE的实例。我不在乎它是如何完成的,因此只要可以访问和分配arrProps
中指定的值,就可以与在实例内部,实例外部以及原型get /中使用“ a”相同组。使用'b'的示例为:
this["b"] = value;
iife.b = value;
this[b] = value;
就获取/设置内部而言,只不过是获取值和设置值而已。
任何帮助将不胜感激。
答案 0 :(得分:1)
让函数代替代理,而不使用符号,您可以使用其get
和set
陷阱来检查对任意属性的访问/分配:
const proxy = new Proxy({}, {
get(obj, prop) {
console.log('getting');
return obj[prop];
},
set(obj, prop, newVal) {
console.log('setting');
return obj[prop] = newVal;
},
});
proxy.a = 'aVal';
console.log(proxy.a);
proxy.b= 'bVal';
proxy.c = 'cVal';
proxy.a = 'anotherAVal';