Javascript实现困境:寻找具有方法覆盖解决方案的类
Javascript implementation dilemna: looking for a class with method overriding solution
我不是Javascript专家。我已经开发了一个操作页面,使用一个函数为我的一些JS代码定义一个类(如这里所述)。这个类非常复杂,可以帮助计算对象位置。它现在已经过测试并可运行。
我正在写新的页面,我想重用这个类。但是,对于每个页面,该类的至少一个方法应该被重写(就像在Java中一样)。我在另一个SO问题上读到,在Javascript中不可能重写方法。
我正在考虑修改类原型,但是如果我这样做,所有的类实例都将被修改。
我非常不愿意为每个页面复制我的类代码。对于这个问题是否有一个好的/优雅的解决方案?谢谢。
<解决方案/strong>
因此,考虑Šime Vidas对Adam Rackis的解决方案的评论:
function Base(){}
Base.prototype.foo = function() { alert("base"); };
function Derived() {}
Derived.prototype = Object.create( Base.prototype );
Derived.prototype.foo = function() { alert("overridden"); };
var b = new Base();
var d = new Derived();
b.foo();
d.foo();
见:http://jsfiddle.net/8Gq7C/
可以在javascript中重载函数。创建一个新的函数构造函数,该构造函数继承于拥有你想要重载的方法的函数,然后在派生函数的原型上更改方法。
它看起来像这样:
function Base(){}
Base.prototype.foo = function() { alert("base"); };
function Derived() {}
//Derived.prototype = new Base(); //not ideal - see the comments
Derived.prototype = Object.create(Base.prototype); //grab MDN shim for older IE
Derived.prototype.constructor = Derived;
Derived.prototype.foo = function() { alert("overridden"); };
var b = new Base();
var d = new Derived();
b.foo();
d.foo();
现场演示
相关文章:
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- iPad虚拟键盘-哪一个-javasctript解决方案
- AJAX HTTP基本身份验证解决方案
- 在chrome web商店中打开时,是否有允许执行内容/后台脚本的解决方案
- Chart.js-添加渐变而不是纯色-实现解决方案
- learnyounode杂耍异步解决方案不工作
- 了解因子分解解决方案
- 提交表单后的最佳解决方案
- 计时器在使用 jQuery 一分钟后没有触发,或者每 1 分钟后给出一些其他解决方案来触发功能
- chrome中的意外全局变量有解决方案吗
- 更好的解决方案HTML元素幻灯片从右侧CSS转换
- 使用SeleniumWebdriver将文本复制到文件时出现编译错误的解决方案
- 如何让我的网站上的WEBP图像加载在morzilla firefox中有一个可能的解决方案吗?如果是,那么如何
- JS驱动的常见问题页面的推荐DB解决方案
- 这里有一个更优雅的/DRY/可维护的JS解决方案
- 什么是农民最实用的解决方案;印刷动物”;
- 根据某些条件验证用户输入,而不是将输入输入到数组中,需要最基本的解决方案
- 将数据加载到地图上的更好解决方案
- 我根据解决方案按类对
- 元素进行分组,但需要帮助了解它的工作原理
- Javascript实现困境:寻找具有方法覆盖解决方案的类