导致jquery错误的javascript继承函数

导致jquery错误的javascript继承函数,javascript,jquery,inheritance,Javascript,Jquery,Inheritance,我创建了两个函数,我想在创建javascript“类”继承时使用它们。我认为这是导致一些javascript错误的第一个原因,例如,$is not defined。我认为这只是一些错误阻止了我的自定义jquery函数的运行,因此抱怨$ Object.prototype.Inherits = function (parent) { if (arguments.length > 1) { parent.apply(this, Array.prototype.slice.

我创建了两个函数,我想在创建javascript“类”继承时使用它们。我认为这是导致一些javascript错误的第一个原因,例如,
$is not defined
。我认为这只是一些错误阻止了我的自定义jquery函数的运行,因此抱怨
$

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

Function.prototype.Inherits = function (parent) {
    this.prototype = new parent();
    this.prototype.constructor = this;
}

我认为第一个功能需要重新制作。有什么建议吗?谢谢,不要修改内置原型。不是这样的。要么:

  • 接受原型继承模型和
    Object.create()
  • 对您的方法使用非侵入性解决方案

是否导入了jquery库?而且我猜newparent()应该是newparent()?我说的对吗?是的,我把它排除在外,这是因为它应该是“parent”,因为它在函数的参数中不是大写字母。我认为这是问题的另一个函数,尽管“什么是参数”?函数的参数。将父级作为参数传递,并在函数中使用它。@erimerturk“arguments”默认存在。例如,请参见Afaik jQuery对于内置对象的原型扩展非常明智。你不应该这样做,这并不总是正确的。我不认为库应该修改本机对象,但我确实认为开发人员可以而且应该有这样做的自由,使他的编程环境最高效,并根据自己的需要进行定制。坚持使用
someBuiltin.foo
而不是
foo(someBuiltin)
并不是真正的定制。而且(正如OP所发现的)这会导致问题。首先,我不认为这会导致他的问题。我认为,他的错误和这段代码完全无关。其次,在本地人身上添加方法不仅仅是“坚持使用bar.foo而不是foo(bar)”——而是要能够为代码生成流畅的语法,即
someArray.filter(…).pull('somekey').slice(0,5).average()
而不是
average(pull)(someArray.filter(…),somekey')。slice(0,5))
,它的可读性要差得多,并且很难理解处理这些数据的操作顺序。是的,但是原型链较长,导致代码速度较慢。在数组示例中,如果您经常使用这些方法,那么使用另一个对象扩展数组并没有什么好处,而不是在任何地方都使用它。此外,您不能再使用文字数组了。再说一次,开发人员向本机对象添加属性没有什么错。在我看来,库不应该这样做,因为同样的原因,它们不应该使用全局变量。当开发人员添加他自己的东西,或者混合n匹配任何适合他的东西时,这一点都没有任何负面影响。没有原型链的解决方案可以像在非动态编程语言中一样:
arrayAdapter(someArray)。filter(…)。pull('somekey')…