javascript - Resig的JS继承脚本...父类的属性被覆盖

标签 javascript jquery html oop inheritance

只是尝试在某个地方使用 JS 继承,并且遇到了子类覆盖属性的问题。 我使用一个名为 options 的对象来具有可以覆盖的默认属性。就像这样:

class a {

   options: {
       property1: 1,
       property2: 2
   },

   init: function (parameters, element) {
       this.options = $.extend({}, this.options, parameters);
   }

}

我这样做是因为我也使用插件创建...但这不是问题。问题是,当您覆盖也有选项参数的基类时,它会被覆盖,并且当您在基类中调用 _super 时,它不知道它用来做什么来执行它需要做的事情做。

例如,您有两个类:PersonNinja。在 Person 初始化后,他吃东西……他饿了。 Ninja 扩展了 Person 并且他需要读取命中列表。虽然是忍者,但作为人还是要吃饭的。所以你调用 this._super();但他似乎不再有任何食物了(这在选项中声明)。

这是一个 fiddle ,您可以在其中明白我的意思:http://jsfiddle.net/37Z8m/5/

我能想到的解决这个问题的方法是重新声明父类中的默认选项,以便它们仍然存在,或者向 J-Resig 的继承脚本添加异常,以仅添加到选项类而不覆盖它...只是在其他语言中,当您扩展时,它仍然可以访问它自己的属性。

John 的继承脚本首先覆盖该对象,然后让您调用 _super();我认为这是错误的......?

最佳答案

但是如果您想要覆盖父选项而不是合并怎么办?听起来你应该直接使用选项而不使用中间字典:

class a {
     options: {
         eat: 'burger',
         drink: 'soda'
     }
}

变成了

class a {
     options_eat: 'burger',
     options_drink: 'soda'
}

关于javascript - Resig的JS继承脚本...父类的属性被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7891184/

相关文章:

javascript - 如何在 SVG 中创建嵌入阴影(透明背景)?

javascript - 添加淡入淡出并按外部 div 以重置为 Jquery 隐藏和显示

javascript - Couchbase 服务器未将 CORS header 返回到 XMLHttpRequest 对象

Javascript 滚动功能缓慢,Chrome 中出现大量 "Timer Fired: onloadwff.js:310"黄鼠狼事件

asp.net - html.ListBoxFor报错问题asp.mvc 3

jquery - 如何降低响应式 slider 的高度

javascript - 使用 .htaccess 和 javascript 处理 404?

php - 如何使用 jQuery 条件测试设置 php 变量?

javascript - Raphael js - 在保留单个元素不透明度的同时为组设置动画不透明度

javascript - 在 HTML5 Canvas 游戏中为 "room"创建移动边界的好方法是什么?