Object.defineProperty错误

时间:2016-02-18 12:43:30

标签: javascript ecmascript-3

我必须找到一个等效的代码:

Object.defineProperty(object, sProperty, vValue); 

因为我正在使用一台不支持ECMA Javascript5的旧js口译员,所以我试图切换到这段代码:

if(vValue.get)
  object["get "+ sProperty] = vValue.get;
 if(vValue.set)
  object["set " + sProperty] = vValue.set;

但它不起作用。 PS:我的vValue是: vValue

1 个答案:

答案 0 :(得分:0)

假设vValue的格式为value: x,那么

function myDefineProperty(object, sProperty, vValue) {
  object[sProperty] = vValue.value;
}

如果vValue是包含getset的属性描述符,那么您可以尝试使用__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#Polyfill处的polyfill。