首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简约原型(js框架)

简约原型(js框架)
EN

Stack Overflow用户
提问于 2011-01-26 19:04:58
回答 4查看 516关注 0票数 1

我想使用原型javascript框架来实现它的“类”和继承功能。对于其他一切,我将使用jQuery。是否有一个极简的原型版本,只会给我这个功能?如果我不全部使用,我就不想要整个库的额外开销。

具体而言,我希望类和继承功能允许我按如下方式定义类(来自wikipedia的示例):

代码语言:javascript
复制
var FirstClass = Class.create( {
  // The initialize method serves as a constructor
  initialize: function () {
   this.data = "Hello World";
  }
});

并扩展另一个类别:

代码语言:javascript
复制
MyNewClass = Class.create( FirstClass, { 
  //Override the initialize method
  initialize: function() { 
    //..
  }, 
  // ...more methods add ... 
});

另外,我不希望框架之间发生冲突(也就是说,jQuery应该只使用$。我只想要原型(或者任何其他建议都可以)用于类创建/继承)。

EN

回答 4

Stack Overflow用户

发布于 2011-01-26 22:01:47

Inheritance.js是开发原型库的人受到启发的模型,我认为这正是您所要求的。

注意:如下面的评论所述,$super似乎是this.parent

票数 5
EN

Stack Overflow用户

发布于 2011-01-27 10:43:57

如果你在寻找极简主义的东西:

代码语言:javascript
复制
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;
        }
    };
}

示例用法:

代码语言:javascript
复制
// 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();
票数 3
EN

Stack Overflow用户

发布于 2011-01-28 09:53:52

不要混合原型和jQuery。我的经验是他们在一起玩得不好。我个人的偏好将是使用原型,因为优越的语法糖。

无法禁用原型的$功能。您可以通过jQuery.noConflict()禁用jQuery对$的使用,但这并不完美。

正如@mhtiza所说,如果您决定坚持使用Interitance.js,那么使用jQuery作为类糖。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4808778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档