我想使用原型javascript框架来实现它的“类”和继承功能。对于其他一切,我将使用jQuery。是否有一个极简的原型版本,只会给我这个功能?如果我不全部使用,我就不想要整个库的额外开销。
具体而言,我希望类和继承功能允许我按如下方式定义类(来自wikipedia的示例):
var FirstClass = Class.create( {
// The initialize method serves as a constructor
initialize: function () {
this.data = "Hello World";
}
});并扩展另一个类别:
MyNewClass = Class.create( FirstClass, {
//Override the initialize method
initialize: function() {
//..
},
// ...more methods add ...
});另外,我不希望框架之间发生冲突(也就是说,jQuery应该只使用$。我只想要原型(或者任何其他建议都可以)用于类创建/继承)。
发布于 2011-01-26 22:01:47
Inheritance.js是开发原型库的人受到启发的模型,我认为这正是您所要求的。
注意:如下面的评论所述,$super似乎是this.parent。
发布于 2011-01-27 10:43:57
如果你在寻找极简主义的东西:
function clone(obj) {
if(typeof obj !== 'undefined') {
clone.prototype = obj;
return new clone;
}
}
function copy(dest, src) {
for(var name in src) {
if(src.hasOwnProperty(name))
dest[name] = src[name];
}
}
function classof(constructor) {
return {
extend : function(base) {
constructor.prototype = clone(base.prototype);
return this;
},
mixin : function(members) {
copy(constructor.prototype, members);
return this;
}
};
}示例用法:
// base class:
function Foo(value) {
this.value = value;
}
classof(Foo).mixin({
inc : function() { ++this.value; }
});
// derived class:
function Bar() {
Foo.apply(this, arguments);
}
classof(Bar).extend(Foo).mixin({
dec : function() { --this.value; }
});
var bar = new Bar(42);
bar.inc();
bar.dec();发布于 2011-01-28 09:53:52
不要混合原型和jQuery。我的经验是他们在一起玩得不好。我个人的偏好将是使用原型,因为优越的语法糖。
无法禁用原型的$功能。您可以通过jQuery.noConflict()禁用jQuery对$的使用,但这并不完美。
正如@mhtiza所说,如果您决定坚持使用Interitance.js,那么使用jQuery作为类糖。
https://stackoverflow.com/questions/4808778
复制相似问题