Ext OOP基础

时间:2023-04-25 09:09:08
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>第三章:Ext OOP基础</title>
<link rel="stylesheet" href="src/ext/resources/css/ext-all.css"> <!--ext-base 必须在ext-all之前引入-->
<script src="src/ext/ext-base.js"></script>
<script src="src/ext/ext-all.js"></script>
<!--<script src="src/ext/ext-lang-zh_CN.js"></script>-->
</head>
<body> <script>
// js prototype扩展类功能
var Crab = function () {
this.legs = 10;
};
Crab.prototype = {
say: function () {
console.log('我是一只螃蟹,我有' + this.legs + '只脚,横行霸道是我的天性');
},
};
// js继承
var extend = function (child, father) {
child.prototype = father.prototype;
};
var GenGrab = function () {
this.legs = 2;
};
extend(GenGrab, Crab);
var gc = new GenGrab();
gc.say(); </script> <script>
/*Ext.namespace('com.aptech') 命名空间*/
Ext.namespace('com.aptech'); com.aptech.First = function () {
// 私有成员
var kiss = '*';
// 私有方法 // 公有方法
return {
// 公有成员
init: function () {
alert('init');
alert(kiss);
}, // 公有成员
method: function () {
alert('method');
},
};
}; com.aptech.Second = function () {
// 调用父类构造方法
com.aptech.Second.superclass.constructor.apply(this);
}; /*
* @extend 第一个参数子类,第二个参数父类,第三个参数要覆盖的属性
* com.aptech.Second 子类继承自父类 com.aptech.First
* */
Ext.extend(com.aptech.Second, com.aptech.First, {
// 新方法
fun: function (i) {
return i * i * i;
},
// 重写com.aptech.First的方法
method: function () {
alert('Second::method')
}
});
// 测试
var second = new com.aptech.Second()
// alert(second.fun(5)) /*
* Ext.apply() 将第二个参数的成员赋给第一个参数
* 不管config里面有多少个成功都没问题
* */
function Student (config) {
// 把调用函数的所有属性,
Ext.apply(this, config)
}
var student = new Student({name:'陈大大', sex: '男'})
console.log('姓名:'+ student.name) /*
* Ext.applyIf() 不会将config和obj参数同名属性覆盖,
* 且obj没有的,config中有,则会被复制到obj中
* */
function Student (config) {
// 把调用函数的所有属性,
this.name = '陈帅'
this.sex = '男'
Ext.applyIf(this, config)
}
var student = new Student({name:'陈大大', sex: '男', birthday: new Date()})
console.log(student)
</script>
</body>
</html>