JavaScript和ExtJS的继承 Ext.extend Ext.applyIf (转)
2009-10-25 21:14
423 查看
首先看一下经典的JavaScript的继承机制。
定义一个名为BaseClass的类,然后为BaseClass定义两个函数:someMethod()和overridenMethod().
var BaseClass = function(){
//do something
};
BaseClass.prototype.someMethod = function(){
//do something
};
BaseClass.prototype.overridenMethod = function(){
//do something
};
使用传统方式在JavaScript中实现类的继承操作
var SubClass = function(){
BaseClass.call(this);
};
SubClass.prototype = new BaseClass();
SubClass.prototype .newMethod = function(){
//do something
};
SubClass.prototype.overridenMethod = function(){
//do something
};
SubClass的构造函数中首先调用BaseClass的构造函数初始化数据,然后通过
SubClass.prototype = new BaseClass();
这条语句让SubClass类获得BaseClass中的所有属性和函数,从而实现了JavaScript中的继承操作,为子类添加了新函数而且覆盖了父类中的同名函数。
在ExtJS中使用Ext.extend()函数实现继承功能
var SubClass = function(){
SubClass.superclass.constructor.call(this);
};
Ext.extend(SubClass,BaseClass,{
newMethod: function(){};
overridenMethod: function(){};
};
Ext.extend()函数提供了直接访问父类构造函数的途径,通过SubClass.superclass.constructor.call(this);就可以直接调用父类的构造函数,这个函数的第一个参数总是this,以确保父类的构造函数在子类的作用域里工作。
如果父类的构造函数需要传入参数,可以讲所需的参数直接传递给它:
SubClass.superclass.constructor.call(this,config);这样就得到了一个继承了父类的所有属性和函数的子类。
Ext.apply函数的作用是将一个对象中的所有属性都复制到另一个对象中。
Ext.applyIf与Ext.apply的作用类似,区别在于如果某个属性在目标对象中已经存在,则Ext.applyIf不会将它覆盖。
定义一个名为BaseClass的类,然后为BaseClass定义两个函数:someMethod()和overridenMethod().
var BaseClass = function(){
//do something
};
BaseClass.prototype.someMethod = function(){
//do something
};
BaseClass.prototype.overridenMethod = function(){
//do something
};
使用传统方式在JavaScript中实现类的继承操作
var SubClass = function(){
BaseClass.call(this);
};
SubClass.prototype = new BaseClass();
SubClass.prototype .newMethod = function(){
//do something
};
SubClass.prototype.overridenMethod = function(){
//do something
};
SubClass的构造函数中首先调用BaseClass的构造函数初始化数据,然后通过
SubClass.prototype = new BaseClass();
这条语句让SubClass类获得BaseClass中的所有属性和函数,从而实现了JavaScript中的继承操作,为子类添加了新函数而且覆盖了父类中的同名函数。
在ExtJS中使用Ext.extend()函数实现继承功能
var SubClass = function(){
SubClass.superclass.constructor.call(this);
};
Ext.extend(SubClass,BaseClass,{
newMethod: function(){};
overridenMethod: function(){};
};
Ext.extend()函数提供了直接访问父类构造函数的途径,通过SubClass.superclass.constructor.call(this);就可以直接调用父类的构造函数,这个函数的第一个参数总是this,以确保父类的构造函数在子类的作用域里工作。
如果父类的构造函数需要传入参数,可以讲所需的参数直接传递给它:
SubClass.superclass.constructor.call(this,config);这样就得到了一个继承了父类的所有属性和函数的子类。
Ext.apply函数的作用是将一个对象中的所有属性都复制到另一个对象中。
Ext.applyIf与Ext.apply的作用类似,区别在于如果某个属性在目标对象中已经存在,则Ext.applyIf不会将它覆盖。
相关文章推荐
- JavaScript和ExtJS的继承 Ext.extend Ext.applyIf
- ExtJS学习------Ext.define的继承extend,用javascript实现相似Ext的继承
- extjs的Ext.extend的使用样例(Ext继承)
- 阅读Ext 学习Javascript(二)Core/Ext.extend 从继承说起
- 阅读Ext 学习Javascript(二)Core/Ext.extend 从继承说起
- extjs apply,applyif,override,extend 的区别
- ExtJs--13-- Ext.apply(src,apply) 和 Ext.applyIf(src,apply) 两个方法的使用和区别比较
- EXTJS4自学手册——EXT基本方法、属性(apply、applyIf、constructor)
- Ext.apply、 Ext.applyIf和Ext.extend
- extjs中 apply,applyif,override,extend 的区别与 jQeury 中同样含义的方法
- ExtJs--13-- Ext.apply(src,apply) 和 Ext.applyIf(src,apply) 两个方法的使用和差别比較
- 阅读Ext 学习Javascript(二)Core/Ext.extend 从继承说起
- 阅读Ext 学习Javascript(二)Core/Ext.extend 从继承说起
- 阅读Ext 学习Javascript(二)Core/Ext.extend 从继承说起
- Ext.apply Ext.applyif 的理解
- javascript 继承(extend)
- Ext中apply及applyIf
- Ext的extend继承1
- extjs源码分析-001(Ext.apply)
- Javascript中的继承机制3------apply()方法