交换JavaScript属性我想有某种JavaScript中偷懒initialied对象的属性,因此希望以某种方式超载读取属性和写入权限,即:是否可以创建或访问
var someval = myobj.lazyprop; // invokes myobj.get("lazyprop");
myobj.lazyprop = someval; // invokes myobj.set("lazyprop",someval);
myobj是我提供给脚本的一些对象。理由:我想在应用程序中使用Javascript(Rhino)作为脚本引擎,需要脚本访问的数据结构可能非常大且复杂。所以我不想将它们全部提前包装到javascript对象中,尤其是,因为这个应用程序中的平均脚本只需要它们的一小部分。另一方面,我希望脚本尽可能简单易读,所以我不希望在脚本中显式使用带字符串参数的get或set方法。
如果您要从另一个网站剪切和粘贴长篇文章,您应该清楚地指定源代码(我看到您链接到2不同的网站,但没有提到你从第二个完整粘贴) – jspcal 2010-01-14 03:12:48
也应该注意到,根据mozilla文档,第一种形式(使用“__defineGetter__”):“可以使代码难以阅读和理解“,而在我的文章中的风格被推荐为”更紧凑和自然“。 – jspcal 2010-01-14 03:14:30
*可以使代码难以阅读和理解*是主观的。我觉得它很好,但我使用Python编码,底层系统是完全一样,只有你有一个'property'函数,而且当你需要覆盖现有的getter/setter时,'__defineGetter__' /'__defineSetter__'的用法非常有用,因为它们默默地覆盖了前面的getter/setter,而风趣h另一种语法,您必须先删除现有的语法。我真的不知道除了引用的文本和归属链接之外,还有哪些内容需要添加。如果没有阅读链接,IMO – voyager 2010-01-14 03:40:43