zoukankan      html  css  js  c++  java
  • 继承

    1、梳理知识点
    面向对象 : 功能独立 便于后期维护   变量的私有化
    面向过程 : 
    什么是类 :  
    类和对象的关系 :
    对象创建的几种方式
     1、字面量创建方法{  }  new Object()
     2、 工厂模式 instanceof  
     3、构造函数 
     4、解决构造的缺点 :使用原型方法    
     5、混合     
    原型对象 : 构造函数都有一个prototype属性 该属性就是原型对象  
    原型链 : 实例对象和原型之间的连接
        function Fun(){
            this.name = "jack"
        }              
        Fun.prototype.name = "lily"
        Fun.prototype.age = 10;
        var f = new Fun();
        console.log( f.name , f.age)  jack  10
    原型模式的执行流程 : 
     
    2、继承 
    面向对象的三大特性:  封装  继承  多态(js没有)
    继承 : 子类继承父类所有的属性和方法
     
    3、继承方式一 : 通过改变父类的执行环境
    function Father(){
        this.money = 999999999999;
        this.sing = function(){
            console.log("唱歌");
        }
    }
    function Son(){
        在子类中定义一个属性  这个属性的值指向父类的构造函数
        this.parent = Father;
        调用子类的属性 
        this.parent();
    }
     
    4、通过call或apply继承
    call和apply:改变非匿名函数的this指向(不能继承原型)
        在子类中调用父类
        Father.call(this,name)用call方式接收实参
        var Son = new Son("xiaoming")
     
        Father.apply(this,arguments)用数组方式接收实参
        var Son = new Son("xiaoming")
     
    call和apply的区别 : 
        call的第二个参数个数不固定
        apply的第二个参数是一个数组,可以通过arguments来代替
     
    5、原型继承
    让子类的原型对象指向父类new出来的实例对象( 首先在子类的实例上查找,找不到去原型上查找)
    子类.prototype = new 父类();
     
    缺点:
        继承可变的实例属性时,属性值无法更改
        这样的实例属性应该由call或apply的方式继承
     
    6、混合继承
    通过call或apply方式继承实例属性
    通过原型继承  继承方法
     
    7、ES6的构造函数
    class 构造函数名{
        constructor(属性){ 使用constructor构造属性
            this.属性 = 属性
        }
        方法(){
     
        }
    }
    例如 : 
       class Student{
            constructor(name,age){
                this.name = name;
                this.age = age;
            }
            study(){
                return ""
            }
     
            eat(){
                console.log()
            }
       }
     
    8、ES6的继承
        class Son extends Father{ extends继承
           constructor(name,age,score){
               super(name,age); 使用super可以继承父类的属性和方法
               this.score = score;//子类特有的属性
           }
           //子类特有的方法
            study(){
               return "学习ing";
           }
        }
     
     
     
     
     
  • 相关阅读:
    关于hibernate的实体类中有集合类型转化成JSON的工具类
    关于hibernate的实体类中有集合类型转化成JSON的工具类
    浏览器九宫格的简单实现
    小米1S MIUI V5刷回V4教程
    新婚常用祝贺词
    【转】spring3 MVC实战,手工搭建Spring3项目demo
    Java8的日期时间处理
    穷达自有天命 无事多读好书
    [oracle/sql]求员工表中每个部门里薪水最高的员工,那种sql最优?
    [Java]取得当前代码所在函数的函数名
  • 原文地址:https://www.cnblogs.com/tis100204/p/10302386.html
Copyright © 2011-2022 走看看