Ошибка 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;

но это не работает PS: мое vValue это: VVALUE

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.

Другие вопросы по тегам