ExtJS继承Extend

问题描述

MyGridPanel = Ext.extend(Ext.grid.GridPanel, { constructor: function(config) { // Your preprocessing here MyGridPanel.superclass.constructor.apply(this, arguments); // Your postprocessing here }, your方法: function() { // etc. } });以上是Extjs API关于Extend的用法说明,有点不理解,1.这里的constructor就是一个普通的方法吗,可是在实例化MyGridPanel的时候会自动调用该方法?2.MyGridPanel.superclass.constructor.apply(this, arguments); 这行代码的作用是什么?有人说是调用父类构造函数,这个父类是指哪个?这里的superclass是什么意思?还有这里的参数arguments可以换成传进来的config吗?3.在 MyGridPanel.superclass.constructor.apply(this, arguments);这行代码的前后的代码应该做什么?有什么作用?这部分看了好久 一直没整明白 JS一直半解,还请达人解释解释

解决方案

1. constructor这个方法其实就是最后的 MyGridPanel,也就相当于MyGridPanel = function(config) { // Your preprocessing here MyGridPanel.superclass.constructor.apply(this, arguments); // Your postprocessing here }因为Ext.extend中覆盖的属性是放在原型上的,所有constructor被赋值到MyGridPanel.prototype.constructor,而MyGridPanel.prototype.constructor又指向MyGridPanel本身2. MyGridPanel.superclass.constructor.apply(this, arguments); 这个确实是调用父类的构造方法superclass不是javascript里面自带的,是在调用Ext.extend时给MyGridPanel的的运行上加的一个属性,这个属性指向父类的原型也就Ext.grid.GridPanel的原型,所以可以调用Ext.grid.GridPanel原型上的所有方法和属性。还有这里的参数arguments可以换成传进来的config吗? 可以,如果你确定参数只有一个config,因为js中函数调用时,实参不一定等于形参的数目,所以用arguments就用的是实参。如果你确定实参只有一个可以直接用形参只不过需要用call代替apply3. 理论上做什么都可以。一般是这样,之前可以做一些必要属性的初始话工作,比如store,columns等等,之后可以做一些和grid本身无关的一些操作

时间: 2024-11-05 12:15:13

ExtJS继承Extend的相关文章

jQuery继承extend用法详解_jquery

本文实例为大家jQuery继承extend用法,供大家参考,具体内容如下 js代码 //直接基于jQuery的扩展,判断是否为空 $.isBlank = function(obj){ return(typeof(obj)=='undefined'||obj==''||obj==null); } //直接基于jQuery的扩展,去除html标签,保留内容 $.htmlContent = function(tag){ var reTag = /<(?:.|\s)*?>/g; return tag.

Extjs 继承Ext.data.Store不起作用原因分析及解决_extjs

关于这个原因有很多种,我只说下我遇到的 我这样 写Store来复用的 复制代码 代码如下: DocStore = Ext.extend(Ext.data.Store,{ initComponent:function(){ this.proxy = new Ext.data.HttpProxy({url:this.url}); this.reader = new Ext.data.JsonReader( { totalProperty: 'results', root: 'rows', id:'d

ExtJS 4.2 教程-03:使用Ext.define自定义类

转载自起飞网,原文地址:http://www.qeefee.com/extjs-course-3-define-classes ExtJS 4.2 教程-01:Hello ExtJS ExtJS 4.2 教程-02:bootstrap.js 工作方式 ExtJS 4.2 教程-03:使用Ext.define自定义类 ExtJS 4.2 教程-04:数据模型 ExtJS 4.2 教程-05:客户端代理(proxy) ExtJS 4.2 教程-06:服务器代理(proxy) ExtJS 4.2 教程

JS继承用法实例分析_javascript技巧

本文实例分析了JS继承的用法.分享给大家供大家参考.具体分析如下: 继承 : 子类不影响父类,子类可以继承父类的一些功能 ( 代码复用 ) 属性的继承 : 调用父类的构造函数 call 方法的继承 : for in :  拷贝继承 (jquery也是采用拷贝继承extend) 1. 拷贝继承 function Person (name){ this.name = name; } Person.prototype.showName =function (){ alert(this.name); }

Backbone.js系列教程十:Backbone.View

在前几节中我们介绍了Backbone基础知识,如果你还没有阅读过,那么我建议你从第一节开始学习--Backbone.js系列教程一:Backbone.js初探,尤其希望你能完全理解构造Backbone对象相 关知识,这对于学习今后的内容有很大帮助.在接下来的几个小节中,我们将深入Backbone,讨论Backbone views.models和collections.相信大家在阅读前文之后,已经对Backbone.View.Backbone.Model. Backbone.Collection构

Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme

原文:Android菜鸟的成长笔记(6)--剖析源码学自定义主题Theme 还记得在Android菜鸟的成长笔记(3)中我们曾经遇到了一个问题吗?"这个界面和真真的QQ界面还有点不同的就是上面的标题myFirstApp,怎么去掉这个标题呢?",当时我直接在AndroidMainfest.xml中添加了一个属性: android:theme="@android:style/Theme.NoTitleBar" 可能有的朋友就会迷惑了,为什么添加了这个属性就可以了.这一篇

前端构建:Less入了个门

一.前言 说到前端构建怎能缺少CSS预处理器呢!其实CSS的预处理器有很多啦,比较出名的有Scss.Sass.Stylus和Less.(最近还听说出现了Autoprefixer等CSS后处理器,可参考@一丝的PPT) 众多CSS预处理器中Less的语法最接近原生CSS,因此相对来说更容易上手,假如有JS.C#等编程经验的话,其实上述的几种预处理器的学习成本也不会特别高.下面是我们这阵子的学习笔记,以便日后查阅. 最好的入门教程--官网地址:http://lesscss.org/ 最佳实践之一--

openstack之horizon源码分析

一.基础准备: Horizon是基于django webframework开发的标准的Python wsgi程序,django的设计专注于代码的高度可重用,信奉DRY原则,一切面向对象,而Horizon可以说高度match了django的设计风格.网站程序基本有三部分组成,业务逻辑代码(Python),静态文件(js/css),模板(Python中的 jinja,mako,nodejs中有jade), 用户向webserver发起请求之后,server程序找到当前url对应的模板,填充模板变量(

Express使用手记:核心入门

入门简介 Express是基于nodejs的web开发框架.优点是易上手.高性能.扩展性强. 易上手:nodejs最初就是为了开发高性能web服务器而被设计出来的,然而相对底层的API会让不少新手望而却步.express对web开发相关的模块进行了适度的封装,屏蔽了大量复杂繁琐的技术细节,让开发者只需要专注于业务逻辑的开发,极大的降低了入门和学习的成本. 高性能:express仅在web应用相关的nodejs模块上进行了适度的封装和扩展,较大程度避免了过度封装导致的性能损耗. 扩展性强:基于中间