nickevin 2009-07-22 15:03
浏览 232
已采纳

Ext.extend 疑惑

[code="java"]
var Person = function (config) {
this.name = 'foo';
this.toString = function () {
return 'form Person';
}
}

var Student = function (config) {
Ext.apply(this, config);
Student.superclass.constructor.call(this, {
name: config.name
});
}

Ext.extend(Student, Person, {
toString: function () {
return 'form Student';
}
});

var s = new Student({
name: 'bar'
});

alert(s.name); // 为什么name没有被覆盖 如何才能此值
alert(s.toString()); // 为什么toString没有被覆盖 如何才能此方法

[/code]

我认为Ext.extend 应该可以做到 属性和方法的继承 和 属性和方法的 覆盖 请教之 谢谢!
[b]问题补充:[/b]
首先感谢 yourgame

我想你贴的这段代码自己有没有运行过
我运行你的代码 没有任何改变 下面贴出 直接在firebug运行 麻烦你了 谢谢

[code="java"]
var Person = function (config) {
this.name = 'foo';
this.toString = function () {
return 'form Person';
}
}

var Student = Ext.extend(Person, {
[color=red] constructor: function (config) {
Student.superclass.constructor.apply(this, arguments);
},
toString: function () {
return 'form Student';
}[/color]
});

var s = new Student({
name: 'bar'
});

alert(s.name);

alert(s.toString());

[/code]
[b]问题补充:[/b]
首先感谢 atian25

如能贴出完整可执行代码 不胜感激
[b]问题补充:[/b]
to atian25

我运行 代码可以

但是

我删除子类的toString() 然后运行 发现没有继承toString()
[b]问题补充:[/b]
感谢 atian25 抽出时间关注问题 并解决我的问题

我之前没有注意到 constructor 谢谢提醒

  • 写回答

4条回答 默认 最新

  • iteye_10013 2009-07-22 16:15
    关注

    [code="java"]
    var Person = Ext.extend(Object,
    {
    constructor:function(config){
    Ext.apply(this,config,{name:'parent'});
    },
    //这是系统本身的方法
    toString:function() {

    return 'parent tostring';

    },
    someMethod:function(){
    return 'someMethod';
    }
    })

    var Student = Ext.extend(Person, {
    constructor: function(config) {
    Student.superclass.constructor.apply(this, arguments);
    },
    toString: function(){

    return 'son to string';

    }
    });

    var s = new Student({

    name: 'son'

    });

    var Student2 = Ext.extend(Person, {
    constructor: function(config) {
    Student.superclass.constructor.apply(this, arguments);
    }
    });
    var s2 = new Student2({

    name: 'son2'

    });

    alert(s.name);

    alert(s.toString());
    alert(s.someMethod());
    //这句..在FF下正常, IE下不对..
    alert(s2.toString());
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?