Extjs中的类和继承

以下是类的两种构造方法:
1. 声明Person类,定义构造函数
var Person=function(name,age){
//声明两个两个变量
this.name=name;
this.age=age;
}
定义Person类中的sayHello方法
Person.prototype.sayHello=function(){

}
2.通过属性形式定义类的构造函数
Person.prototype={

//其中可以定义变量,属性,方法等
name:"zhang",
sayHello:function(){

}
}

Ext中的类继承通过三个方法来实现:
Ext.extend() 、 Ext.apply() 、 Ext.applyIf()

Ext.apply(obj, config, [defaults]) 将config对象的所有属性都复制到另一个对象obj上,第三个参数defaults可以用来提供默认值,不过通常指用前两个参数就够了。这个函数主要用在构造函数中,用来将配置复制到对象上。
Ext.applyIf(obj, config) 和Ext.apply的功能类似,唯一不同的是,这个函数只会将config对象中有,而obj对象中没有的属性复制到obj上。
Ext.extend(subclass, superclass, [overrides]) 用来继承已有的类,通常的使用方法有
使用传统方式在JavaScript中实现类的继承操作:
//定义一个子类,构造函数中访问父类的构造函数
var SubClass = function(){
BaseClass.call(this);
};
//定义子类的构造函数
SubClass.prototype = new BaseClass();
//定义子类的新方法
SubClass.prototype .newMethod = function(){
//do something
};
SubClass.prototype.overridenMethod = function(){
//do something
};
在ExtJS中使用Ext.extend()函数实现继承功能:
var SubClass = function() {
//调用父类的构造函数
SubClass.superclass.constructor.call(this);
};
Ext.extend(SubClass, BaseClass, { newMethod : function() {}, overriddenMethod : function() {} };
Extjs中替换constructor,写法如下:
// initComponent replaces the constructor:
SubClass = Ext.extend(BaseClass, {
initComponent : function(){
// call superclass initComponent
Ext.Container.superclass.initComponent.call(this); this.addEvents({
// add events
}); } }
Ext.extend()函数提供了直接访问父类构造函数的途径,通过 SubClass.superclass.constructor.call(this);就可以直接调用父类的构造函数,这个函数的第一个参数总是 this,以确保父类的构造函数在子类的作用域里工作。
如果父类的构造函数需要传入参数,可以讲所需的参数直接传递给它:
SubClass.superclass.constructor.call(this,config);这样就得到了一个继承了父类的所有属性和函数的子类。

Ext.apply函数的作用是将一个对象中的所有属性都复制到另一个对象中。
Ext.applyIf与Ext.apply的作用类似,区别在于如果某个属性在目标对象中已经存在,则Ext.applyIf不会将它覆盖。
在上面的代码中, SubClass继承自BaseClass, 添加了新的方法newMethod,重写了overriddenMethod方法。

再看下面的例子:
SuperClass=function()
{
}
SuperClass.prototype.AA=function()
{
alert('aa');
}

SubClass=function()
{
SubClass.superclass.constructor.call(this);
}
Ext.extend(SubClass,SuperClass,
{
BB:function(){alert('新方法');},
AA:function(){alert('重写方法');}
}//配置信息主要用来重写父类的方法和添加新方法
);

var sub=new SubClass();
sub.AA();
sub.BB();
1. 用户与身体信息管理模块 用户信息管理: 注册登录:支持手机号 / 邮箱注册,密码加密存储,提供第三方快捷登录(模拟) 个人资料:记录基本信息(姓名、年龄、性别、身高、体重、职业) 健康目标:用户设置目标(如 “减重 5kg”“增肌”“维持健康”)及期望周期 身体状态跟踪: 体重记录:定期录入体重数据,生成体重变化曲线(折线图) 身体指标:记录 BMI(自动计算)、体脂率(可选)、基础代谢率(根据身高体重估算) 健康状况:用户可填写特殊情况(如糖尿病、过敏食物、素食偏好),系统据此调整推荐 2. 膳食记录与食物数据库模块 食物数据库: 基础信息:包含常见食物(如米饭、鸡蛋、牛肉)的名称、别(主食 / 肉 / 蔬菜等)、每份重量 营养成分:记录每 100g 食物的热量(kcal)、蛋白质、脂肪、碳水化合物、维生素、矿物质含量 数据库维护:管理员可添加新食物、更新营养数据,支持按名称 / 别检索 膳食记录功能: 快速记录:用户选择食物、输入食用量(克 / 份),系统自动计算摄入的营养成分 餐次分:按早餐 / 午餐 / 晚餐 / 加餐分记录,支持上传餐食照片(可选) 批量操作:提供常见套餐模板(如 “三明治 + 牛奶”),一键添加到记录 历史记录:按日期查看过往膳食记录,支持编辑 / 删除错误记录 3. 营养分析模块 每日营养摄入分析: 核心指标计算:统计当日摄入的总热量、蛋白质 / 脂肪 / 碳水化合物占比(按每日推荐量对比) 微量营养素分析:检查维生素(如维生素 C、钙、铁)的摄入是否达标 平衡评估:生成 “营养平衡度” 评分(0-100 分),指出摄入过剩或不足的营养素 趋势分析: 周 / 月营养趋势:用折线图展示近 7 天 / 30 天的热量、三大营养素摄入变化 对比分析:将实际摄入与推荐量对比(如 “蛋白质摄入仅达到推荐量的 70%”) 目标达成率:针对健
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值