您的位置:首页 > Web前端 > JavaScript

js继承封装(三)

2015-11-14 14:49 603 查看
封装继承方法

//实现继承 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];
}
}
}


这样封装以后,就从一定程度上解决了第二章里面讲到的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: