gpt4 book ai didi

javascript - JS ES6 IIFE + 符号和原型(prototype) - 添加到实例?

转载 作者:行者123 更新时间:2023-12-02 22:06:24 24 4
gpt4 key购买 nike

我意识到我的问题的标题可能措辞奇怪,所以我预先道歉。需要明确的是,我指的是:

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 中指定的值,就像在实例内部、实异常(exception)部和内部使用“a”一样进行访问和分配原型(prototype)获取/设置。使用“b”的示例是:

  • 实例内部:this["b"] = value;
  • 实异常(exception)部:iife.b = value;
  • 原型(prototype)设置/获取:this[b] = value;

就获取/设置内部而言,无非就是获取值和设置值。

任何帮助将不胜感激。

最佳答案

不要使用符号,而是让函数返回代理,并且您可以使用其 getset 陷阱来检查对任意属性的访问/分配:

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';

关于javascript - JS ES6 IIFE + 符号和原型(prototype) - 添加到实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59701472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com