javascript - 如何访问 Object 的 getter 和 setter 函数?
问题描述
有一个对象具有名为密码的属性。通过调用 set 方法调用此属性。然后我将第二个 setter 方法定义为同一个属性。但是我希望第一个 setter 方法和第二个 setter 方法都可以工作。为此,如何访问第一个 setter 函数?
//constant code
var obj = {
get password() {
return this._password;
},
set password(val) {
this._password = new TextEncoder().encode(val);
}
}
Object.defineProperty(obj,"password",{set:function(val){
//exectue first setter function of password
//execute second setter
this._password=val;}})
我只能修改代码。我也无法对代码进行任何更改。
如何访问第一个 setter 函数?
解决方案
您可以保留 setter 的原始版本以在新版本中调用它:
const originalSetPassword = Object.getOwnPropertyDescriptor(obj, "password").set;
Object.defineProperty(obj, "password", {
set: function(val) {
originalSetPassword.call(obj, val);
this._password=val;
}
});
推荐阅读
- python - 在 matplotlib scatter 中针对 x 和 y 绘制第三个变量?
- r - 将散点转换为单平均线图
- web-crawler - 启用 tika 配置时,TextExtraction 不起作用
- angular - 为什么在订阅块中没有调用 store.dispatch() ?
- jquery - 如何在 div 滚动顶部添加类并在 div 滚动时删除?
- php - Apache/PHP 未定义函数 curl_init()
- javascript - 具有适当签名的通用函数
- c# - 替换 ASP.NET Core 2 中的 Page.Request
- testng - 如何将 TestNGReporter 添加到 Log4j 2.x?
- symfony - Symfony RedisAdapter 根据应用环境有不同的内部缓存键