js继承封装(三)

来源:互联网 发布:u盘提示格式化数据恢复 编辑:程序博客网 时间:2024/05/18 00:22

封装继承方法

//实现继承 subClass为子类 superClass为父类function extendsClass(subClass,superClass){    var oldPrototype=subClass.prototype;    var Clazz=new Function();    Clazz.prototype=superClass.prototype;    subClass.prototype=new Clazz();    subClass.prototype.constructor=subClass;    for(var key in oldPrototype){        if(oldPrototype.hasOwnProperty(key)){            subClass.prototype[key]=oldPrototype[key];        }    }}function UpdateCommand(path) {    this.name="修改命令";    this.path = path;    this.executeFun=function(){        alert("发送请求1");    }}UpdateCommand.prototype.execute = function () {    alert("发送请求2");}//定义一个查询command函数function QueryCommand(path) {    UpdateCommand.call(this,path);}QueryCommand.prototype.execute=function(){    alert("发送查询请求");}extendsClass(QueryCommand,UpdateCommand);var queryCommand = new QueryCommand();queryCommand.execute();//发送查询请求

对封装方法简单的说明下

//实现继承 subClass为子类 superClass为父类function extendsClass(subClass,superClass){    //临时存放 用于后面使用    var oldPrototype=subClass.prototype;    //生成新函数,通过该函数来实现原型继承,则减少了superClass的实例化    var Clazz=new Function();    clazz.prototype=superClass.prototype;    subClass.prototype=new Clazz();    //改变原型继承后子类的constructor 指向    subClass.prototype.constructor=subClass;    //保证子类方法重载    for(var key in oldPrototype){        if(oldPrototype.hasOwnProperty(key)){            subClass.prototype[key]=oldPrototype[key];        }    }}

这样封装以后,就从一定程度上解决了第二章里面讲到的问题。

0 0
原创粉丝点击