JavaScript-получатели и сеттеры могут быть переопределены для определенных свойств с помощью Object.defineProperty
. Есть ли способ получить доступ к получателю/установщику по умолчанию (т. Е. Функция, используемая, если геттер/сеттер не был перезаписан)? В моем настраиваемом сеттере я хочу иметь специальную обработку в некоторых случаях, но использую обработку по умолчанию в других. Я пробовал:Доступ к методу getter/setter для объекта JavaScript
Object.defineProperty(obj, 'foo',
'set': function(val) {
if (useCustom) {
doCustomProcessing(obj, 'foo', val);
}
else {
obj['foo'] = val;
}
}
);
К сожалению, это приводит к переполнению стека, поскольку obj['foo'] = val;
вызывает пользовательский сеттер, который будет вызван. Поэтому я хотел бы найти способ установить свойство foo
obj
, используя установщик по умолчанию. Это возможно?
@OP, Чтобы узнать больше о свойствах данных против свойств аксессоры см [ECMAScript 5, раздел 8.6] (HTTP: // WWW. ecma-international.org/ecma-262/5.1/#sec-8.6). – apsillers