1-JS面向对象.ppt
文本预览下载声明
* 使用for .. in..可解决父类与子类代码一致的问题,但每次继承都需要编写for ..in语句。 示例中通过为Object对象定义一extend方法来简化JavaScript中继承操作,Object是JavaScript中的类 类的继承 Object.extend = function(destination, source){ for(prop in source){ destination[prop] = source[prop]; } return destination; } //使用TestB的extend方法继承Test function TestB(){} Object.extend(TestB.prototype, Test); Object.extend(TestB.prototype, { fa:function(){ alert(‘testb.fa’);}//重载Test的fa方法 } * 使用Object.extend方法也可以扩展javascript基本类型的功能,示例为String添加escape方法,将当前字符串转换成url编码 类的继承 Object.extend(String.prototype, { escape:function(){ return escape(this); } }); * JavaScript中实现多态的方式与继承类似,在父类里可以使用一个未定义的方法,该方法即是一个抽象方法,在子类中再具体实现。 类的多态 //父类方法 function Base(){} Base.prototype.initialize = function(){ this.init();//调用子类的方法 //父类初始化 } function TestB = {}; TestB.prototype = Object.extend({ init:function(){ alert(‘TestBinit’);} }, Base.prototype); var testa = new TestA(); var testb = new TestB(); //返回TestAinit alert(testa.initialize()); //返回TestBinit alert(testb.initialize()); function TestA = {}; TestA.prototype = Object.extend({ init:function(){ alert(‘TestAinit’);} }, Base.prototype); * JavaScript提供了new运算符用于构建类的实例。 JavaScript中支持JSON数据格式,JSON可用于定义JavaScript的匿名对象或数组。 JavaScript充许动态的添加对象的属性或方法。 类的实例 //定义JSON格式的匿名对象 var employee = { id:’001’, name:’jerry’ }; //定义JSON格式的数组对象 var employees = [ {id:’001’,name:’jerry’},{id:’002’,name:’tony’},employee ]; //动态添加employee的属性 employee.address = ‘xmbcit’; * 在基于AJAX的RIA(Rich Internet Application)的应用中,JavaScript的类非常多,除遵守面向对象的开发原则外,还需要有效的组织JavaScript类的存储。 JSVM提供了一种组织JavaScript的框架,采用动态加载JavaScript脚本的机制,以类似于Java的包,类的组织方式来组织JavaScript的类。 JSVM中每个公开的类对应一个js文件,文件名与类名一致。 包是一种特殊的对象,可以包含类,顶层的包是Window的对象 JSVM简介 * 在项目中添加JSVM,只需要将JSVM的根目录拷贝至项目中。 JSVM中所有的类都存放在classes目录中,在页面上只需要引入jsre.js即可。 加入JSVM的页面可在JavaScript脚本中使用$import(“包名.类名”)方式引用依赖的JavaScript类。 组织JSVM的环境 script type=text/javascript src=jsvm2/jsre.js debug=true/script script type=text/javascript $import(“foo.bar.SayHello”);
显示全部