`
fregen
  • 浏览: 4367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

一个自定义的javascript类系统

阅读更多

代码如下:

(function(w){

var $ = w.$ = w.$||{};

var F = function (){};

$.base = function (o){
   F.prototype = o;
   return new F();
};

//这个就是蝴蝶书中的Object.beget

 

//

$.def = function(p,base){

    var s = p

    if(base instanseOf Function)

        s = $.base(base.prototype)

    else if(base instanseOf Object)

        s = $.base(base)

    if(s != p){

        for(var v in p)

            s[v] = p[v]

    }

    var f = function(){

        var t = this

        if(t === window || t === null){

            t = $.base(s)

        }

        return p.init.apply(t,arguments)

    };

    f.fn = f.prototype = s

    f.fn.constructor = f

    return f

};

})(window);

介 绍:

1.$.base(o)返回以o为原型的对象。

2.$.def(p,base)定义一个“类”(实际是返回一个 函数),p为其原型(必须有init方法作为构造函数),base为“父类”(可为构造函数或普通对象)。

3.实例化类似于Jquery,不需要 new。
4.完全兼容原生系统,“类”可以作为普通的构造函数,用new实例化,也可以用call,apply调用。
5.prototype 有fn的别名,和Jquery一样。
6.自动设定constructor。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics