首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动getter/setter

自动getter/setter
EN

Stack Overflow用户
提问于 2012-03-08 15:38:36
回答 1查看 258关注 0票数 0

我使用mootools 1.4.3进行基本类继承。实际上,我正在从不同的类库中转换一些代码。另一个类库将基于预定义的函数名模板动态创建getter和setter(成员函数_get_xxx将为xxx生成一个getter)。我想用电动工具做一些类似的事情。我对Javascript并不陌生,但我对更高级的概念有点不熟悉。

我已经让它部分发挥作用了。在定义Class对象的代码中,我循环类参数并相应地添加、defineGetter、defineSetter

http://jsfiddle.net/Qa2dr/1/

这很好,它正确地创建了getter和setter。当我创建一个子类时,它会失败。这些动态getter/setter不会传播到子类。我不确定这是否可能,如果有,它是如何做到的。使用对mootools类和以下类的上述更改:

http://jsfiddle.net/vLyk7/10/

在foo的日志中,我可以看到getter和setter用于bar。在用于baz的日志中,我可以看到quux的getter和setter,但我也希望看到父程序的getter和setter。同样,如果我能让它工作起来,我将节省大量的时间来转换这段代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-08 16:34:29

正确的。我想我明白你想做的事但是..。

__defineGetter____defineSetter__被废弃,而不是跨浏览器:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/DefineSetter

当您扩展对象时,保护和代理对这些属性的直接访问将无法工作,因为setter/getter --访问新对象上的属性--不会到达您正在侦听的父对象(原型对象)。

您可以尝试查看Extends param。设置新类时,查找从新params对象到prototype链上一直存在的函数,如果找到匹配项,也应该将setter/getter应用于新对象。没那么容易..。

我想说,可能在:newClass.prototype.parent = parent;之后,您应该能够检查getter/getter是否可用,并附加您的侦听器。您可能希望以某种方式保存引用,除非此时要检查所有类属性。

或者,您可以重构初始化类mutator w/o,进入类型创建,并在那里追加您的东西--尽管原始对象可能不可用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9620347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档