WEB开发网
开发学院网页设计JavaScript Javascript的构造函数和constructor属性 阅读

Javascript的构造函数和constructor属性

 2010-01-12 00:00:00 来源:WEB开发网   
核心提示: 最后,再回到上一篇遗留下来的问题,Javascript的构造函数和constructor属性(2),上文谈到Extjs官网给出的一个继承Observable的例子:Employee=Ext.extend(Ext.util.Observable,{constructor:function(conf

最后,再回到上一篇遗留下来的问题,上文谈到Extjs官网给出的一个继承Observable的例子:

Employee = Ext.extend(Ext.util.Observable, {
    constructor: function(config){
        this.name = config.name;
        this.addEvents({
            "fired" : true,
            "quit" : true
        });
        // Copy configured listeners into *this* object so that the base class's
        // constructor will add them.
        this.listeners = config.listeners;
        // Call our superclass constructor to complete construction process.
        Employee.superclass.constructor.call(config)
    }
});

这个例子给人的错觉就是你可以重写父类的constructor属性,从而达到改变子类的构造函数的行为的效果。这对于Javascript基础却不深的人是一种误导。 我们再仔细看下Ext.extend的源代码:

extend : function(){ 
      // inline overrides 
      var io = function(o){ 
        for(var m in o){ 
          this[m] = o[m]; 
        } 
      }; 
      var oc = Object.prototype.constructor; 
 
      return function(sb, sp, overrides){ 
        if(Ext.isObject(sp)){ 
          overrides = sp; 
          sp = sb; 
         
 sb = overrides.constructor != oc ? overrides.constructor : function(){sp.apply(this, arguments);}; //注意这里

        } 
        //以下省略………

Tags:Javascript 构造 函数

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接