美文网首页
原型 原型链 继承

原型 原型链 继承

作者: H5日常记 | 来源:发表于2021-05-31 14:05 被阅读0次

    每个函数都有 prototype 属性,除了 Function.prototype.bind(),该属性指向原型。

    每个对象都有 proto 属性,指向了创建该对象的构造函数的原型。其实这个属性指向了 [[prototype]],但是 [[prototype]] 是内部属性,我们并不能访问到,所以使用 proto 来访问。

    对象可以通过 proto 来寻找不属于该对象的属性,proto 将对象连接起来组成了原型链

    1. 原型链的继承

    function Student(name,age){
        this.name = name
    }
    Student.prototype.study = function(){
        console.log('学生的任务就是要好好学习')
    }
    
    function Person(gener){
        this.gener = gener;
    }
    
    let student = new Student('肖战');
    
    Person.prototype = student ;
    let person = new Person('男')
    Person.prototype.eat = ()=>{
        console.log('人还要吃饭')
    }
    
    person.study()
    person.eat()
    
    1. 借用构造函数继承
    function SuperType () {
      this.colors = ["red", "blue", "green"]
    }
    function SubType () {
      // 继承了SuperType
      SuperType.call(this)
      // 只能继承构造函数上的属性
    }
    const subType = new SubType();
    subType.colors
    

    实现的本质:在子类构造函数的内部调用超类型构造函数,使用aapply()和call() 方法
    注意:
    1.函数复用性不高
    2.只能继承实例上的属性,原型上的方法不可见

    相关文章

      网友评论

          本文标题:原型 原型链 继承

          本文链接:https://www.haomeiwen.com/subject/qkussltx.html