我想在 javascript 中有某种惰性初始化对象属性,因此想以某种方式重载属性读写访问,即:

var someval = myobj.lazyprop; // invokes myobj.get("lazyprop"); 
myobj.lazyprop = someval;     // invokes myobj.set("lazyprop",someval); 

其中 myobj 是我提供给脚本的某个对象。

理由:我想在应用程序中使用 Javascript (Rhino) 作为脚本引擎,脚本需要访问的数据结构可能非常庞大和复杂。所以我不想提前将它们全部包装到 javascript 对象,尤其是。因为此应用程序中的普通脚本只需要其中的一小部分。另一方面,我希望脚本尽可能简单易读,因此我不想要求在脚本中明确使用带有字符串参数的 get 或 set 方法。

请您参考如下方法:

您可以使用 Rhino 1.6R6 来做到这一点或更高 javascript getters and setters .

function Field(val){ 
   var value = val; 
 
   this.__defineGetter__("value", function(){ 
       return value; 
   }); 
 
   this.__defineSetter__("value", function(val){ 
       value = val; 
   }); 

}

Now, if we wanted to, instead, define getters and setters within the context of our object prototype (and where having "private" data is less of a concern) we can then use an alternative object syntax for that.

function Field(val){ 
   this.value = val; 

}

Field.prototype = { 
   get value(){ 
       return this._value; 
   }, 
   set value(val){ 
       this._value = val; 
   } 

};


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!