美文网首页
ES5的继承---原型链继承

ES5的继承---原型链继承

作者: 彬彬彬boboc | 来源:发表于2019-04-28 14:13 被阅读0次

ES5的继承

构造函数、原型和实例的关系:每一个构造函数都有一个原型对象,每一个原型对象都有一个指向构造函数的指针,而每一个实例都包含一个指向原型对象的内部指针,

  • 原型链实现继承:
    • 基本思想:利用原型让一个引用类型继承另一个类型的属性和方法,即让原型对象等于另一个类型的实例
    • 基本模式:
    // 构造函数
    function Person(name, sex) {
       this.name = name;
       this.sex = sex;
       this.niam= "草拟吗"
       this.run=function(){
            console.log(this.name+"在奔跑")
       }
    }
    // 定义Person的原型,原型中的属性可以被自定义对象引用
    Person.prototype = {
       getName: function() {
           return this.name;
       },
       getSex: function() {
           return this.sex;
       }
    }
    
    Subperson.prototype = new Person()
    function Subperson(name, sex, color){
        this.color = color
        this.niam= "你阿妈"
        this.run=function(){
            console.log(this.name+"---"+this.color+"还活蹦乱跳")
        }
    }
    let sub = new Subperson("小李","男","黄色的");
    console.log(sub.getName())
    sub.run()
    console.log(sub.niam)
    
    
输出:

$ node es5继承.js
undefined
undefined---黄色的还活蹦乱跳
你阿妈

  • 最终总结:Sub指向Subperson的原型,Subperson的原型又指向Person的原型
    • 注意事项:

      • 别忘记默认的原型,所有的引用类型都继承自Object,所有函数的默认原型都是Object的实例,因此默认原型里都有一个指针,指向object.prototype

      • 谨慎地定义方法,给原型添加方法的代码一定要放在替换原型的语句之后,不能使用对象字面量添加原型方法,这样会重写原型链

    • 原型链继承的问题

      • 最主要的问题来自包含引用类型值的原型,它会被所有实例共享

      • 第二个问题是,创造子类型的实例时,不能向超类型的构造函数中传递参数

相关文章

  • 继承

    原型链继承 许多OO语言都支持两种继承方式接口继承和实现继承,ES5只有实现继承,且主要依靠原型链继承。 那我们先...

  • 浅谈JavaScript原型、原型链的概念与继承的实现原理

    关于js对象的继承,es5和es6提供了两种不同的继承机制。es5通过修改原型链的方式实现继承,由此可见继承与原型...

  • Javascript 面向对象(ES5继承)

    ES5继承 在ES5中继承是通过原型链来继承的。 我们都知道每个构造函数都有有一个原型对象,原型对象都包含一个指向...

  • JavaScript的继承

    前言 忘了整理的理一理。 ES5继承 先不涉及ES6的继承,后面会涉及。这里主要是ES5的继承: 原型链继承 构造...

  • 原型与原型链以及继承

    今天复习下原型与原型链的知识,以及记录新学的继承知识点。 知识点纲要 原型与原型链 es5与es6继承 什么是原型...

  • 04. typescript类

    学习typescript前,大家可以先回忆一下es5中的相关知识点 例如: 对象冒充继承 原型链继承 原型链+对象...

  • Class 的继承 extend继承 es6继承基本用法

    Class继承基本用法 Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,...

  • 继承

    原型链直接继承 原型链直接继承prototype 原型链继承_prototype属性 继承_构造函数绑定

  • ES5和ES6 实现继承方式

    在ES5 中:通过原型链实现继承的,常见的继承方式是组合继承和寄生组合继承;在ES6中:通过Class来继承 组合...

  • js基础之实现继承的几种方式

    js 实现继承的方式有: 原型链继承; 构造函数继承; 组合继承(原型链继承 + 构造函数继承)(最常用);(原型...

网友评论

      本文标题:ES5的继承---原型链继承

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