javascript 对象原型(prototype)与 jquery 冲突?

标签 javascript jquery object prototypal-inheritance

我正在尝试实现 here 提供的解决方案,但显然与此 ticket 中描述的 jquery 冲突。 .

到目前为止我还没有找到解决方案,有什么想法吗?

我想实现Shelby Moore提出的继承机制

这可能是问题的原因,扩展了对象原型(prototype):

Object.prototype.Inherits = function(parent)
{
    if(arguments.length > 1)
    {
        parent.apply(this, Array.prototype.slice.call(arguments, 1));
    }
    else
    {
        parent.call(this);
    }
}

编辑1:经过广泛阅读后,我采用了以下模式:

NewFunction.prototype = Object.create(new FunctionToInheritFrom());

最佳答案

扩展Object.prototype会扩展所有对象,因此,如果您修改所有对象的原型(prototype),则可以阻止它们所需的行为,这就是为什么应该避免直接修改对象原型(prototype)。更好的做法是扩展自定义函数原型(prototype),以确保不会破坏其他原型(prototype),即由 jQuery 等框架提供的原型(prototype)。即使是代表 DOMElements 的对象也会被修改,这通常是一个坏主意。

尽管如此,我想提一下,Javascript 本身并没有定义真正的继承,尝试解决这个问题会导致很多问题,并使开发变得更加困难。 Javascript 中的继承是基于原型(prototype)的继承,这与真正的继承不同,面对这一事实并使用 Javascript 自己的方法进行“类似于继承的东西”(即描述的 here )是直接的并且效果非常好。

对我来说,Javascript 继承更像是合并对象成员,关于此的一篇非常好的文章是 this one of douglas crockford ,我认为值得一读。

关于javascript 对象原型(prototype)与 jquery 冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12282918/

相关文章:

javascript - SpringMVC - 如何仅在用户注销时清除缓存

javascript - 带扩展名的文件名验证

javascript - CKEDITOR.replace( 'editor1' , 'editor2' , {

jQuery:表单操作的切换按钮问题

c# - 测试一个对象不是一个类型

java - 如何在 Java 中向文件追加对象?

java - 如何用对象手动填充数组?

javascript - 使用 span 和 javascript 创建 CSS 过渡

javascript - Highcharts - 如何将标签居中放置在日期时间 x 轴上?

javascript - 如何使可滚动元素可拖动?