继承

作者: 小淘气_嘻 | 来源:发表于2018-07-02 10:51 被阅读0次
  • 原型链是实现继承的主要方法(_proto_的引用链), 即让一个引用类型继承另一个引用类型的属性和方法
原型链.png
  • 注意有三个关键词:
    • prototype 构造函数具有
    • constructor 原型对象具有
    • _proto_ 实例对象具有
原型对象、构造函数、实例对象.png

每个实例对象Object都有一个私有属性_proto_指向它的原型对象prototype。 该原型对象也有一个自己的原型对象,层层向上直到一个对象的的原型对象为null.
null没有原型,是原型链最后一个环节。

function SuperType(){ this.property=true; }  // 构造函数  对象   
          SuperType.prototype.getSuperValue=function(){return this.property;}
function SubType(){  }    //构造函数   对象
SubType.prototype = new SuperType();   //原型  此时的指针是[[prototype]]
var instance = new SubType();  //实例

[[prototype]]默认情况下不可以再被外部访问,但会被for..in等遍历原型链上可以被枚举的属性的时候访问

两个对象之间实现了继承,方式:创建`SuperType`的实例 及重定义`SubType.prototype` 。本质是重写了原型对象.png

结论:

  1. 创建一个函数,这个函数就立即拥有属性prototype。 即prototype属性存在函数中,指向的是原型对象
  2. 函数的prototype对象具有属性constructor, 且指向该函数自身
    fun.prototype.constructor === func 结论为 true
  3. 函数实例的contructor指向函数本身
    var obj = new Fuc(); obj.constructor == Func;
  4. JavaScript每个对象,都有一个内置的_proto_属性
    obj instanceof Func 结论为true
  5. JavaScript 对象的内部属性——_proto_属性,函数也是对象

原形脸最终指向

  • 函数对象的原型链最终指向Function prototype对象
  • 非函数对象的原型链最终指向Object prototype对象
  • Function prototype对象的_proto_属性也指向Object prototype对象
  • Object prototype对象的_proto_属性指向null
原型链的指向.png 函数F的原型链相关属性解释.png

创建对象

  • new方法构建
    • 分配内存作为新创建的对象
    • 将新创建的对象的_proto_属性指向函数F的原型对象
new方法创建实例,生成的原型链图.png
  • 对象字面量
    • 分配内存作为新创建的对象
    • 将新创建对象的_proto_属性指向Object prototype object
对象字面量创建实例对象,生成原型链图.png

相关文章

  • 继承 继承

    属性拷贝 继承不单单能通过原型链实现,也能通过其他方式实现,属性拷贝就是其中一种方法。 通过属性拷贝也能实现继承子...

  • 继承(单继承,多继承)

    将共性的内容放在父类中,子类只需要关注自己特有的内容 python中所有的内容都是对象,所有的对象都直接或间接继承...

  • js继承方式

    类式继承 构造函数继承 组合继承 类式继承 + 构造函数继承 原型式继承 寄生式继承 寄生组合式继承 寄生式继承 ...

  • Python-学习之路-08 OOP -02

    单继承和多继承 单继承:每个类只能继承一个类 多继承:每个类可以继承多个类 单继承的多继承的优缺点 菱形继承/钻石...

  • 原型相关(二)

    1.继承 继承方式:接口继承(只继承方法签名)实现继承(继承实际的方法)ECMAScript只支持实现继承,并且主...

  • 继承

    继承的引入和概述 继承案例和继承的好处 继承的弊端 Java中继承的特点 继承的注意实现和什么时候使用继承 继承中...

  • Java面向对象三大特性之继承

    继承 一、继承的特点 Java只支持单继承单继承 多继承 单继承、多继承优缺点①单继承优点:提高了代码的复用性,让...

  • 7、面向对象的程序设计3(《JS高级》笔记)

    三、继承 许多OO语言都支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际方法。由...

  • 【重学前端】JavaScript中的继承

    JavaScript中继承主要分为六种:类式继承(原型链继承)、构造函数继承、组合继承、原型式继承、寄生式继承、寄...

  • js之继承

    文章主讲 JS 继承,包括原型链继承、构造函数继承、组合继承、寄生组合继承、原型式继承、 ES6 继承,以及 多继...

网友评论

    本文标题:继承

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