• 继承的三种方式


    //对象冒充方式继承(支持多继承) 
    function ClassA(sColor) {
    this.color = sColor;
    this.sayColor = function () {
    console.log(this.color);
    };
    }
    var a = new ClassA("yellow");
    function ClassB() {
    ClassA.call(this,"blue");
    this.ll = "hh";
    this.say = function(){
    console.log(this.ll);
    }
    }
    var b = new ClassB();
    var c = new ClassB();

    console.log(b.sayColor === c.sayColor);//false这说明每一个对象都保存了一份sayColor函数的代码体(体现函数 逻辑的数据)
    //的副本,显然是一种浪费


    //原型方式继承(不支持多继承)
    function ClassA() { }
    ClassA.prototype.color = "blue";
    ClassA.prototype.sayColor = function () {
    alert(this.color);
    };
    function ClassB() { }
    ClassB.prototype = new ClassA();
    ClassB.prototype.name = "";
    ClassB.prototype.sayName = function () {
    alert(this.name);
    };
    var a= new ClassA();
    var b= new ClassB();
    var c = new ClassB();
    console.log(b.sayColor === c.sayColor);//true共享同一份方法
    console.log(b.sayColor === a.sayColor);//true
    console.log(b.sayName === c.sayName);//true
    console.log(b.color === c.color);//true


    //混合方式(创建类的最好方式是用构造函数定义属性,用原型定义方法) //用对象冒充继承构造函数的属性,用原型链继承 prototype 对象的方法
    function ClassA(sColor) {
    this.color = sColor;
    }
    ClassA.prototype.sayColor = function () {
    alert(this.color);
    };
    function ClassB(sColor, sName) {
    ClassA.call(this, sColor);
    this.name = sName;
    }
    ClassB.prototype = new ClassA();
    ClassB.prototype.sayName = function () {
    alert(this.name);
    };
    var b = new ClassB("black","kk");
    var c = new ClassB("red","ll");
  • 相关阅读:
    巩固复习(对以前的随笔总结)_01
    Django 项目分析后得到的某些结论
    django 命令行命令
    实现搜索视频到播放(非原创)
    python 打包
    随笔汇总,温故知新
    找伙伴
    sam-Toy Cars
    反质数
    Blue Mary的战役地图
  • 原文地址:https://www.cnblogs.com/huahua-1022/p/7120150.html
Copyright © 2020-2023  润新知