热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaScripta面向对象之继承

最近一直在看NicholasC.Zakas的《JavaScript高级程序设计》看到面向对象编程时,就自己连抄带编总结了一下。由于自己对很多概念理解不是过于透彻,所以以代码为主,以后会慢慢更

最近一直在看Nicholas C.Zakas的《Javascript高级程序设计》

看到面向对象编程时,就自己连抄带编总结了一下。

由于自己对很多概念理解不是过于透彻,所以以代码为主,以后会慢慢更新加上自己的理解

如有不妥或者错误之处,还请斧正

一、对象冒充

function ClassA(sColor){
    this.color=sColor;
    this.sayColor=function(){
        alert(this.color);
    }
}

function ClassB(sColor,sName){
    this.showColor=ClassA;
    this.showColor(sColor);
    delete this.showColor;

    this.name=sName;
    this.sayName=function(){
        alert(this.name);
    }
}

var test=new ClassB('red','color');
test.sayColor();
test.sayName();

二、call()方法

function ClassA(sColor){
    this.color=sColor;
    this.sayColor=function(){
        alert(this.color);
    }
}

function ClassB(sColor,sName){
    ClassA.call(this,sColor);

    this.name=sName;
    this.sayName=function(){
        alert(this.name);
    };
}

var test=new ClassB('red','color');
test.sayColor();
test.sayName();

三、apply()方法

function ClassA(sColor){
    this.color=sColor;
    this.sayColor=function(){
        alert(this.color);
    }
}

function ClassB(sColor,sName){
    ClassA.call(this,sColor);

    this.name=sName;
    this.sayName=function(){
        alert(this.name);
    };
}

var test=new ClassB('red','color');
test.sayColor();
test.sayName();

四、原型链方法

function ClassA(){};
ClassA.prototype.color='red';
ClassA.prototype.sayColor=function(){
    alert(this.color);
};

function ClassB(){};
ClassB.prototype=new ClassA();
var test=new ClassB();
test.sayColor();

五、混合模式

//类A的属性
function ClassA(sColor){
    this.color=sColor;
}
//类A的方法
ClassA.prototype.sayColor=function(){
    alert(this.color);
};
//类B继承A的属性
function ClassB(sColor,sName){
    ClassA.call(this,sColor);
    this.name=sName;
}
//类B继承A的方法
ClassB.prototype=new ClassA();
//类B自己的方法
ClassB.prototype.sayName=function(){
    alert(this.name);
}

var test=new ClassB('red','color');
test.sayColor();
test.sayName();

 


推荐阅读
author-avatar
小白菜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有