Sencha Touch 2.4 callParent() 用法

简介: callParent() 用法方法介绍用来调用父类的同名方法,并传参,这在从一个框架类派生且要重写诸如onRender这样的方法时会经常看到。传参方式1.argumentsExt.define('App.

callParent() 用法

方法介绍

用来调用父类的同名方法,并传参,这在从一个框架类派生且要重写诸如onRender这样的方法时会经常看到。

传参方式

1.arguments

Ext.define('App.view.MyPanel', {
    extend: 'Ext.panel.Panel',
    onRender: function (parentNode, index) {
        this.callParent(arguments);//调用父类的同名方法onRender(),并传参过去
} });

2.直接传参

onRender: function (parentNode, index) {
    this.callParent([ parentNode, index ]);
}

这看上去没有区别,不过,在使用Sencha Cmd 5新的优化对callParent进行优化的时候,性能的改进会变得很明显。在启用了优化的时候,这两个方法会被优化为以下代码:

onRender: function (parentNode, index) {
    Ext.panel.Panel.prototype.onRender.apply(this, arguments);
}
 
onRender: function (parentNode, index) {
    Ext.panel.Panel.prototype.onRender.call(this, parentNode, index);
}

在第二种情况下,优化会使用Javascript函数的call方法来替代apply方法。要避免使用arguments。这两种方式毫无疑问都是高性能的方式。事实证明要尽量避免创建数组直接量。显然,在启用了优化后的代码中性能是最至关重要的地方,因而值得使用显示数组来代替arguments。

//父类
Ext.define('VehicleApp.vehicle.Vehicle', {
                                unit: "mph", 
                                drive: function(speed) {
                                    console.log(this.$className + ": Vrrroom: " + speed + " " + this.unit);
                                }
});

//子类
Ext.define('VehicleApp.vehicle.Motor', {
    extend: 'VehicleApp.vehicle.Vehicle',
    
    config: {
        nrOfWheels: 2 //<1>
    },

    constructor: function (config) {
        this.initConfig(config); //<2> 
    },

    drive: function(speed) { //<3>
        
        if(this.getNrOfWheels() < 3) { //<4>
            console.log(this.$className + 
                ": Vrrroom, vrrroom on " + this.getNrOfWheels() +
                     " wheels.");
        } else {
            this.callParent( [60]); //调用父类的同名方法drive(),并传参过去,是个数组,里面放了一个60
        }
    }
});

转自:http://extjs.org.cn/node/721

@落雨
ae6623.cn

目录
相关文章
|
Android开发
Android Studio的怪错:AndroidManifest.xml unresolve symbol package/connot resolve symbol/Animations
Android Studio的怪错:AndroidManifest.xml unresolve symbol package/connot resolve symbol/Animations
91 0
Android Studio的怪错:AndroidManifest.xml unresolve symbol package/connot resolve symbol/Animations
LaTeX build process spawned. PID: undefined
LaTeX build process spawned. PID: undefined
|
开发工具 Android开发
Appium问题解决方案(7)- Could not find 'adb.exe' in PATH. Please set the ANDROID_HOME environment variable with the Android SDK root directory path
Appium问题解决方案(7)- Could not find 'adb.exe' in PATH. Please set the ANDROID_HOME environment variable with the Android SDK root directory path
578 0
Appium问题解决方案(7)- Could not find 'adb.exe' in PATH. Please set the ANDROID_HOME environment variable with the Android SDK root directory path
|
Python
Python编程:使用sys、argparse、click、fire实现命令行参数解析
Python编程:使用sys、argparse、click、fire实现命令行参数解析
271 0
|
IDE Java Go
tools:context用法
tools:context用法
560 0
|
C#
一起谈.NET技术,WPF Multi-Touch 开发:基础触屏操作(Raw Touch)
  多点触控(Multi-Touch)就是通过与触屏设备的接触达到人与应用程序交互的操作过程。例如,生活中经常使用的触屏手机、触屏笔记本、显示器以及微软最新的Surface 产品等这些都属于触屏操作设备。
1143 0
|
Android开发
add 'tools:replace="android:value"' to element at AndroidManifest.xml:25:5-27:34 to over
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
2030 0
|
iOS开发
iOS开发--3D Touch的基本使用
1.桌面快捷菜单项 效果如图: 1.桌面快捷菜单项 效果如图: 1.桌面快捷菜单项 效果如图: 桌面快捷菜单 点击之后的效果如图: 点击桌面快捷菜单的效果 接下来看下具体实现:1).在-application:didFinishLaunchingWithOptions:方法中用-setShortcutItems:方法来添加快捷菜单项。

热门文章

最新文章