`

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 {}). ...

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

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

    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 常用插件...

    精通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()`,我们可以定义新的类,同时保留和扩展已存在...

    ExtJs原生批量上传+实时进度

    extend: 'Ext.window.Window', height: 400, width: 700, title: '文件上传', closeAction: 'hide', maximizable: true, layout: 'fit', uploadParams: null, initComponent: function() { var me = ...

    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使用--Panel和iframe联合使用时页面高度的解决方法

    Ext.extend(Ext.layout.container.MyIFrameLayout, Ext.layout.container.Fit, { onLayout: function(ct, target) { var iframe = ct.items.first(); if (iframe && iframe.rendered) { var iframeBody = ...

Global site tag (gtag.js) - Google Analytics