Ошибка Object.defineProperty
Я должен найти эквивалентный код для:
Object.defineProperty(object, sProperty, vValue);
потому что я работаю со старым интерпретатором js, который не поддерживает ECMA Javascript5, поэтому я пытаюсь перейти на этот код:
if(vValue.get)
object["get "+ sProperty] = vValue.get;
if(vValue.set)
object["set " + sProperty] = vValue.set;
1 ответ
Решение
Если предположить, vValue
имеет форму value: x
, затем
function myDefineProperty(object, sProperty, vValue) {
object[sProperty] = vValue.value;
}
Если vValue
дескриптор свойства, включающий get
а также set
тогда вы можете поэкспериментировать с использованием __defineGetter__
а также __defineSetter__
если они доступны в вашей среде:
function myDefineProperty(object, sProperty, vValue) {
object.__defineGetter__(sProperty, vValue.get);
object.__defineSetter__(sProperty, vValue.set);
}
Для более полнофункциональной реализации см. Полифилл по адресу https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties.