使用Object.defineProperty
,可以覆盖特定属性的JavaScript getter和setter。有没有一种方法可以访问默认getter/setter(即如果getter/setter未被覆盖,则使用的函数)?在我的自定义setter中,我想在某些情况下进行特殊处理,但在其他情况下使用默认处理。我尝试过:
Object.defineProperty(obj, 'foo',
'set': function(val) {
if (useCustom) {
doCustomProcessing(obj, 'foo', val);
}
else {
obj['foo'] = val;
}
}
);
不幸的是,这会导致堆栈溢出,因为 obj [ 'foo'] = val; 会导致调用自定义setter。所以我想找到一种使用默认setter设置
obj 的
foo 属性的方法。这可行吗?