请问在百度里的一个JS源码类的继承,这些代码和prototype.js库里的很相似,我看了半天不知它们是如何实现的
var Class=function(){
    var _class=function(){
       this.initialize.apply(this,arguments)
     };
    for(i=0;i<arguments.length;i++){
     superClass=arguments[i];
        for(member in superClass.prototype){
         _class.prototype[member]=superClass.prototype[member]
       }
    };
   _class.child=function(){
       return new Class(this)
   }; 
   _class.extend=function(f){
       for(property in f){
        _class.prototype[property]=f[property]
       }
    };
  return _class
};这是一个类,
然后新建一个对象:
  var Popup=new Class();
但这个Popup这里却又不是对象,后面还有
Popup.prototype={
   initialize:function(config){}
};
这样,才可new出一个对象来:var po=new Popup();
而且在上面Popup.prototype={
   initialize:function(config){}
};
这个代码里一定要定义initialize:function(config){}
这个函数才能new 成功,
不知这是如何实现的。
请高手赐教

解决方案 »

  1.   

    先理解这3个概念
    1、先看看 obj.prototype 的定义2、JS 类的实现主要有两种方式 前期绑定 和后期绑定
    前期绑定 就是在定义内部定义类成员(属性和方法)
    后期绑定 就是先定义类型,在为该类型绑定相应的成员3、JavaScript 对象就是字典分析
    先定义 Class 类,实际是内嵌一个 _class 类,_class 有两个静态成员 child 和 extend//实例化
    var Popup=new Class(); //采用后期绑定为 Popup 对象绑定 initialize 实例方法
    Popup.prototype={ 
      initialize:function(config){} 
    }; //由于JS里 对象和类名、函数名等概念很模糊可以通用,因此下面拿 Popup 实例作为类,又实例化出一个 po 对象
    var po=new Popup(); 其它代码不完成就分析到这了
      

  2.   

    刚看了网络上的一些代码,发现很多人都用这个类,或类似的语法
    个人不喜欢这种写法,我采用的是与 C# 类似语法来写 JS