- /**
- * window级别对象 使用para: value 方式定义
- * 也可以理解为静态类
- * 可以直接访问其内部的方法和属性
- * testWindowClass.id testWindowClass.m()
- */
- var testWindowClass = {
- //属性
- id: "WId0",
- //方法
- m : function() {
- alert("window object method");
- }
- }
- /**
- * 扩展window对象的扩展方法
- * 为对象增加方法或属性
- * 直接访问 testWindowClass.method3()
- */
- testWindowClass.method3 = function() {
- alert("--window method3--");
- };
- /**
- * 普通JS对象
- * 类似JAVA中的CLASS类
- * 使用this.param = value; 方式定义
- * 初始化对象后才可以访问其内部的属性和方法
- * var t = testObjectClass();
- * t.objectMethod(); t.id;
- */
- var testObjectClass = function() {
- //方法
- this.objectMethod = function() { alert("--object class method--"); };
- //属性
- this.id = 0;
- }
- /**
- * 普通JS对象
- */
- var testBaseClass = function() {
- //id: "0" --error
- this.id="0";
- this.method1=function(){ alert("----testBaseClass:method1()----"); }
- //扩展testObjectClass对象 类似于继承 testBaseClass继承testObjectClass
- testObjectClass.apply(this);
- //将testWindowClass.method3方法应用到testBaseClass对象中去执行
- testWindowClass.method3.apply(this);
- }
- //扩展类的方法 原型(prototype)链方式
- testBaseClass.prototype.method2 = function() {
- alert("----testBaseClass:method2()----");
- };
- //测试方法
- function test() {
- var test44 = new testBaseClass();
- //alert(test44.id);
- //test44.method1();
- //alert(testWindowClass.id);
- //alert(testBaseClass.id);
- //test44.method2();
- //testWindowClass.method3();
- test44.objectMethod();
- }
- //-----------------------------------------------------------
- /**
- * 一些JS框架源码中使用的对象声明方式
- * var Obj = (function() {
- * //私有属性
- * this.id = 0;
- * //私有方法
- * this.m = function(){alert("some method")};
- * return {
- * //公有方法
- * init : function() {this.id = 1;}
- * };
- * })();
- *
- * 该对象声明使用匿名函数 var Obj = (function() {})()
- * 注意 该段代码的结尾处加上了'()' 表示声明后立即执行该段函数
- * 使用方式 Obj.init();
- * 这其中的 Obj的内容即为执行匿名函数的结果
- * 在上面的匿名函数执行后会返回 { init : function(){} };这个对象
- * 这是就可以直接通过 Obj.init(); 调用其返回的对象中的方法
- * 这种方式实现了私有方法/属性与公有方法属性的分离
- * 只有return对象中的方法/属性是可见的
- */
- //-----------------------------------------------------------
- /**
- * 一个应用测试
- */
- //定义一个基础教师类
- var BaseTeacher = function() {
- this.id = 0;
- this.type = "base teacher";
- this.showInfo = function() {
- alert("----showInfo teacher'type: " + this.type);
- };
- }
- //给基础教师类增加name属性
- BaseTeacher.prototype = {
- name: "I don't know!"
- }
- //定义一个中文教师类
- var ChineseTeacher = function() {};
- //中文教师类继承基础教师
- ChineseTeacher.prototype = new BaseTeacher();
- //修改中文教师类的type属性值
- ChineseTeacher.prototype.type = "chinese teacher";
- //定义一个英文教师类
- var EnglishTeacher = function() {};
- //英文教师类继承基础教师
- EnglishTeacher.prototype = new BaseTeacher();
- //修改英文教师类的type属性值
- EnglishTeacher.prototype.type = "english teacher";
- //定义一个意大利语教师类
- var ItalyTeacher = function() {
- //将基础教师类的属性方法赋给意大利语教师对象
- BaseTeacher.apply(this);
- }
- function testBase() {
- //var baseTeacher = new BaseTeacher();
- //alert("teacher'type: " + baseTeacher.type);
- //alert("teacher'name: " + baseTeacher.name);
- var chineseTeacher = new ChineseTeacher();
- var englishTeacher = new EnglishTeacher();
- var italyTeacher = new ItalyTeacher();
- //alert("chineseTeacher.type: " + chineseTeacher.type);
- //alert("chineseTeacher.id: " + chineseTeacher.id);
- //chineseTeacher.showInfo();
- //alert("englishTeacher.type: " + englishTeacher.type);
- //alert("englishTeacher.id: " + englishTeacher.id);
- //englishTeacher.showInfo();
- italyTeacher.showInfo();
- }
- //---end---