`

ExtJs关于Ext.extend()的说明

阅读更多
Ext.extend方法是用来实现类的继承。
extend(Object subclass,Object superclass,[Object overrides] : Object
第一个参数:子类
第二个参数:父类
第三个参数:要覆盖的属性。
这里需要强调一下,子类继承下来的是父类中通过superclass.prototype方式定义的属性(包括用此方法定义的函数)。
例子如下:
Js代码 复制代码
  1. <script type="text/javascript">   
  2.             function S(){   
  3.             }   
  4.             S.prototype.s = "s";   
  5.             S.prototype.s1 = "s1";   
  6.             function C(){   
  7.                 this.c = "c";   
  8.                 this.c1 = "c1";   
  9.             }   
  10.             Ext.extend(C,S,{s1:"by c overload"});   
  11.             var c = new C();   
  12.             alert(c.s); //s   
  13.             alert(c.s1); //by c overload   
  14.         </script>  
<script type="text/javascript">
			function S(){
			}
			S.prototype.s = "s";
			S.prototype.s1 = "s1";
			function C(){
				this.c = "c";
				this.c1 = "c1";
			}
			Ext.extend(C,S,{s1:"by c overload"});
			var c = new C();
			alert(c.s); //s
			alert(c.s1); //by c overload
		</script>

如果按下面这个方式写就会提示c.s没有定义(undefind):
Js代码 复制代码
  1. <script type="text/javascript">   
  2.             function S(){   
  3.                 this.s = "s";   
  4.                 this.s1 = "s1";   
  5.             }   
  6.             function C(){   
  7.                 this.c = "c";   
  8.                 this.c1 = "c1";   
  9.             }   
  10.             Ext.extend(C,S,{s1:"by c overload"});   
  11.             var c = new C();   
  12.             alert(c.s); //undefind   
  13.             alert(c.s1); //by c overload   
  14.         </script>  
<script type="text/javascript">
			function S(){
				this.s = "s";
				this.s1 = "s1";
			}
			function C(){
				this.c = "c";
				this.c1 = "c1";
			}
			Ext.extend(C,S,{s1:"by c overload"});
			var c = new C();
			alert(c.s); //undefind
			alert(c.s1); //by c overload
		</script>


也可以通过如下方式来实现类的继承
Js代码 复制代码
  1. <script type="text/javascript">   
  2.             function S(){   
  3.             }   
  4.             S.prototype.s = "s";   
  5.             S.prototype.s1 = "s1";   
  6.             C = Ext.extend(S,{s1:"by c overload"});   
  7.             var c = new C();   
  8.             alert(c.s); //s   
  9.             alert(c.s1); //by c overload   
  10.         </script>  
<script type="text/javascript">
			function S(){
			}
			S.prototype.s = "s";
			S.prototype.s1 = "s1";
			C = Ext.extend(S,{s1:"by c overload"});
			var c = new C();
			alert(c.s); //s
			alert(c.s1); //by c overload
		</script>

此时,C是子类,S是父类
分享到:
评论
4 楼 Sencha_Android 2012-02-18  
pywepe 写道
lz 乱讲 Ext.extend明明可以继承到"实例属性"

function base(){
this.name = 'fkeede';
}
base.prototype.addr = "addr";

// 实例属性 和原型属性都可以继承到
var sub = Ext.extend(base,{age:20});

alert(new sub().name);
alert(new sub().addr);

如果在继承时在override参数中定义了constructor方法,则子类不会继承父类在构造函数中定义的属性,但是可以继承在prototype中定义的属性,在这种情况下只有在constructor中调用父类的构造函数myClass.superclass.constructor.call(this,……);才会继承父类在构造函数中定义的对象。
3 楼 pywepe 2011-10-20  
lz 乱讲 Ext.extend明明可以继承到"实例属性"

function base(){
this.name = 'fkeede';
}
base.prototype.addr = "addr";

// 实例属性 和原型属性都可以继承到
var sub = Ext.extend(base,{age:20});

alert(new sub().name);
alert(new sub().addr);
2 楼 xiaofan_0204 2010-10-28  
学习了,讲的挺细的!呵呵
1 楼 wustarts 2008-07-03  
                      [/size][size=x-small][color=gray][/color]
[/align][align=center]
[/align][align=center]
[/align][align=right]

相关推荐

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

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

    ExtJS ToolTip功能

    extend:'Ext.container.Container', ... }); ``` 这行代码定义了一个名为`WebApp.view.tip.ToolTip`的新类,该类继承自`Ext.container.Container`。这意味着我们可以使用所有容器类的功能。 2. **布局配置**:...

    ExtJs 带清空功能的日期组件

    可以通过`Ext.extend()`方法实现这一点。 ```javascript Ext.define('MyApp.form.field.ClearableDate', { extend: 'Ext.form.field.Date', alias: 'widget.clearabledatefield', // 添加其他配置项... }); ``...

    Extjs Grid 扩展实例

    在ExtJS中,我们可以通过`Ext.extend()`或使用`Ext.define()`方法创建一个新的类,该类继承自现有类并可以添加新的属性和方法。对于ExtJS Grid,我们可能要扩展其基础配置,比如自定义列、行渲染器、编辑器,甚至是...

    Ext.ux.UploadDialog

    Most configuration options are inherited from Ext.Window (see ExtJs docs). The added ones are: url - the url where to post uploaded files. base_params - additional post params (default to {}). ...

    EXtJS学习 EXtJS学习

    在上述例子中,我们看到一个关于 `Ext.extend` 使用的一个有趣的陷阱。问题在于,当子类继承父类并试图修改一个共享的数组成员时,它们实际上是在操作同一数组的引用,而不是各自独立的副本。这导致了不同实例之间的...

    ExtJs.doc 扩展介绍 英文

    `Ext.extend()` 是 ExtJS 提供的面向对象继承机制,允许你创建新的类或者扩展已有的类。在 Ext2.x 及更早版本中,它是扩展内置类的主要方式。即使在 Ext2.x 之后,理解 `Ext.extend()` 仍然是很重要的,因为它在许多...

    精通JS脚本之ExtJS框架.part2.rar

    14.1 利用Ext.extend实现继承 14.2 与ExtJS扩展相关的预备知识 14.2.1 定义命名空间 14.2.2 使用xtype 14.3 用户扩展和插件 14.3.1 编写自定义用户扩展 14.3.2 常用插件UploadDialog 14.3.3 常用插件...

    ext多选下拉列表的全选功能实现

    "ext多选下拉列表的全选功能实现"这个主题聚焦于一个特定的UI组件——ExtJS库中的MultiComboBox,这是一种允许用户多选的下拉列表控件。在实际应用中,全选功能常常被用来快速选择所有选项,极大地提高了用户的操作...

    精通JS脚本之ExtJS框架.part1.rar

    14.1 利用Ext.extend实现继承 14.2 与ExtJS扩展相关的预备知识 14.2.1 定义命名空间 14.2.2 使用xtype 14.3 用户扩展和插件 14.3.1 编写自定义用户扩展 14.3.2 常用插件UploadDialog 14.3.3 常用插件...

    extJs3升级extjs4方案

    在 ExtJS3 中,我们可以使用 Ext.extend 来定义类,而在 ExtJS4 中,我们需要使用 Ext.define 来定义类。例如,在 ExtJS3 中,我们可以使用以下代码来定义一个类: ```javascript Ext.ux.PostStore = Ext.extend...

    ExtJS的extend(Ext Designer的使用)

    这篇博客文章可能是关于如何在Ext Designer中利用`extend`来设计和自定义UI组件的教程。 首先,我们要理解`extend`在Ext JS中的工作原理。`extend`关键字用于声明一个类是另一个类的子类。这在JavaScript中实现了类...

    extjs4.x tabpanel 动态加载panel和html例子

    extend: 'Ext.panel.Panel', alias: 'widget.myDynamicPanel', // 这里可以添加其他配置 }); Ext.define('MyHtmlPanel', { extend: 'Ext.panel.Panel', alias: 'widget.myHtmlPanel', html: '这是通过xtype...

    无废话ExtJs 系列教程十八[继承:Extend]

    继承在ExtJS中的实现主要基于`Ext.extend()`方法,这个方法是ExtJS提供的一个静态方法,它允许一个类(子类)继承另一个类(父类)的所有属性和方法。通过`Ext.extend()`,我们可以定义新的类,同时保留和扩展已存在...

    Extjs6.x插件,双击关闭选项卡(js源码)

    extend: 'Ext.util.Plugin', alias: 'plugin.closeTabOnDoubleClick', init: function(tabPanel) { tabPanel.on('itemdblclick', this.onTabDoubleClick, this); }, onTabDoubleClick: function(tabPanel, ...

    Ext继承分析

    在ExtJS中,`Ext.extend()` 是一个核心的函数,用于实现类之间的继承机制。它允许你创建新的类(子类),这些类将继承另一个类(父类)的属性和方法。这个功能对于构建复杂的JavaScript应用程序至关重要,因为它提供...

    Ext Js权威指南(.zip.001

    2.5 关于ext.blank_image_url / 40 2.6 关于字体 / 42 2.7 ext js 4语法 / 42 2.8 本地化 / 60 2.9 为本书示例准备一个模板 / 60 2.10 本章小结 / 61 第3章 调试工具及技巧 / 62 3.1 使用firebug进行调试 / ...

    ExtJs中处理后台传过来的date对象显示到页面上

    extend: 'Ext.data.Model', fields: [ {name: 'name', type: 'string'}, {name: 'birthday', type: 'date', mapping: 'birthday.time'} ] }); ``` 这里的`mapping`属性用于指定从JSON对象中提取日期的路径...

Global site tag (gtag.js) - Google Analytics