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 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?