zoukankan      html  css  js  c++  java
  • JavaScript和ExtJS的继承 Ext.extend Ext.applyIf (转)

    首先看一下经典的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不会将它覆盖。

  • 相关阅读:
    将CMD内的显示内容输出到txt文件
    上传项目到Github
    利用百度地图API,在浏览器中找到自己的位置
    操作系统相关知识
    字符串的全排列
    二维数组做函数参数、指向指针的指针做函数参数
    strstr函数与strcmp函数
    华为机试题——数组排序,且奇数存在奇数位置,偶数存在偶数位置
    单链表的建立,插入,显示,查找删除以及反转
    《深入了解 Linq to SQL》之对象的标识 —— 麦叔叔呕心呖血之作
  • 原文地址:https://www.cnblogs.com/baoposhou/p/1589596.html
Copyright © 2011-2022 走看看