导致jquery错误的javascript继承函数
我创建了两个函数,我想在创建javascript“类”继承时使用它们。我认为这是导致一些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.
$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()
- 对您的方法使用非侵入性解决方案
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')…