没有合适的资源?快使用搜索试试~ 我知道了~
EXtJS学习 EXtJS学习
需积分: 10 295 下载量 183 浏览量
2009-03-28
00:43:01
上传
评论 1
收藏 4.2MB DOC 举报
温馨提示
试读
64页
EXtJS EXtJS EXtJS
资源推荐
资源详情
资源评论
使用
Ext.extend
进行继承的一个有趣的问题
在 的使用过程中,偶然发现了一个有趣的问题, 和大家共享一下。 先看
如下代码:
定义一个基类, 一个数组成员 ,和一个空函数
!"
定义一个子类,继承自 ,并重写 方法, 向数组 中添加一
个 #
$#
%&'!
((#!"
!"
再定义一个子类, 也继承自 ,并重写 方法, 向数组 中
添加一个 )
$)
%&'!
(()!"
!"
%&'*!
&#+$#!"
&#!"
&#!"这里得到的应该是 #, 结果也确实是 #, 没错
&)+$)!"
&)!"
&)!"这里得到的应该是一个 ), 但是实际结果却是 #)
,有趣的问题出现了
在执行 * 函数时,收到的两个 分别是 # 和 #),而且,如果不断
的执行 * 函数,得到的值会不断的增加, 这是什么原因呢?问题肯定是
处在 方法上,加载 , 版本的脚本, 对这个方法进行单步跟
踪,发现最终问题出现在 ' 函数上, 看图:
看来在那个 for 循环之中,只是将 overrides 中的各个属性进行简单赋值操
作, 但是,对于本例中出现的数组, 赋值只能传递对数组的引用, 也就是说
SubClass1 和 SubClass2 将共享一个数组,因为他们引用的是同一个数组,
怪不得得到的结果会与期望的不一致呢。
当然, 对于上面的代码适当进行修改, 既可以得到预期的值
%&'!
("(
!"
$#
%&'!
$#&&(!"&&
-%&'
((#!"
!"
$)
%&'!
$)&&(!"&&
-%&'
(()!"
!"
%&'*!
&#+$#!"
&#!"
&#!"
&)+$)!"
&)!"
&)!"
虽然这只是一个很小的问题,但是却不容忽视,我就犯了一个这样的“错误”,
郁闷了好长时间才发现原因, 因此给大家提个醒。
Ext.extend 用法以及代码解读
概述
Ext.extend 是 Ext 的继承机制,这个函数的代码相当难懂。要明白这个函数的代码,首
先要知道这个函数如何使用。
使用方式
使用示例
假设有个 function 名为 SuperClass,要实现一个子类,名为 MyClass。下面的两种方式
都可以实现这个功能。
MyClass = Ext.extend(SuperClass, { /* */ });
Ext.extend(MyClass, SuperClass, { /* */});
下面来个具体示例:
var a = function(id){
this.id = id;
}
a.prototype = {
tostring : function(){
return this.id;
}
};
b = function(id){
b.superclass.constructor.call(this, id);
}
Ext.extend(b, a, {
tostring : function(){
return String.format("b:{0}", this.id);
}
});
//测试一下
var obj1 = new a("obj1");
alert(obj1.tostring());
var obj2 = new b("obj2");
alert(obj2.tostring());
或者下面的代码,可以得到同样的效果:
var a = function(id){
this.id = id;
}
a.prototype = {
tostring : function(){
return this.id;
}
};
b = Ext.extend(a, {
tostring : function(){
return String.format("b:{0}", this.id);
}
});
//测试一下
var obj1 = new a("obj1");
alert(obj1.tostring());
var obj2 = new b("obj2");
alert(obj2.tostring());
一个错误例子
下面看个示例:
BaseClass = function() {
剩余63页未读,继续阅读
资源评论
suiyuan0808
- 粉丝: 13
- 资源: 164
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功