辞职's JS继承脚本.父类的属性被覆盖
Resig's JS Inheritance script... Parent class has properties overwritten
只是试图在某个地方使用JS继承,并且遇到了子类覆盖属性的问题。我使用一个名为options的对象来拥有可以被覆盖的默认属性。So like So:
class a {
options: {
property1: 1,
property2: 2
},
init: function (parameters, element) {
this.options = $.extend({}, this.options, parameters);
}
}
我这样做是因为我也使用插件创建…但这不是问题所在。问题是,当你重写基类时,它也有一个选项参数,然后它被覆盖,当你在基类中调用_super时,它不知道它曾经做过什么来做它需要做的事情。
例如,您有两个类:Person
和Ninja
。初始化Person
后,他吃…他饿了。Ninja
扩展Person
,他需要读取一个命中列表。虽然他是忍者,但他还是需要像人一样吃饭。调用this。_super();但他似乎没有任何食物了(这是在选项中声明的)。
这里有一个小提琴,你可以看到我的意思:http://jsfiddle.net/37Z8m/5/
我能想到的解决这个问题的方法是要么重新声明父类中的默认选项,这样它们仍然存在,要么在J-Resig的继承脚本中添加一个异常,只添加到选项类中,而不是覆盖它…只是在其他语言中,当你扩展时,它仍然可以访问它自己的属性。
John的继承脚本首先重写对象,然后让你调用_super();我认为这是错误的…?
但是如果希望覆盖父选项而不是合并呢?听起来你应该直接使用这些选项而不使用中间字典:
class a {
options: {
eat: 'burger',
drink: 'soda'
}
}
是
class a {
options_eat: 'burger',
options_drink: 'soda'
}
相关文章:
- 是否可以从父类访问子类的属性
- 使用此选项选择父类内部的类
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 子类访问父类's闭包变量
- 使用类属性切换Div值
- 如何通过Prototype或jquery移除子类的父类基类
- 可以't让browserfy使用babel-plugin-transform类属性
- JavaScript—父类和子类/对象的此问题
- 通过使用此组件,检索父类数据
- 仅更改特定输入文本框的父类属性
- 如何从子类访问父类属性
- 为什么我的innerHTML覆盖父类的样式属性?以及我该如何解决这个问题
- 访问JavaScript中的父类属性
- 选择/克隆子类的父类-将文本附加到父类中的各种属性并appendTo / insertAfter结果
- 如何改变css属性取决于父类,但具有相同的类名
- 辞职's JS继承脚本.父类的属性被覆盖
- javascript中的原型属性是如何从父类委托给子类的
- 如何使内部类属性采用父类属性的值
- 按父类名称获取属性值
- 将子类分配给父类类型的属性