6.2 原型和实例的检测及继承

Posted xiaokeai233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.2 原型和实例的检测及继承相关的知识,希望对你有一定的参考价值。

# 一、闭包的应用场景
1. 事件委托的封装
2. 循环中的事件内使用循环每次的计数器
3. 计时器的回调函数传参
4. 模块化开发
5. ......
# 二、原型
1. 实例和构造函数(类)的关系
    - 实例是类的具象化,由new关键字执行类之后得到的对象
    - 类是实例的抽象化,将多个具有共同特点的对象的特点抽象成规范,这个规范叫类(构造函数)
    - 实例 被 类 创造
2. 实例对象
    - 其实可以作为普通对象看待,普通对象也有以下特点
    - 内部会自带一个属性:`__proto__`,这个属性是个对象类型,用来指向创建自身的类,身上的`prototype`属性
    - `__proto__`也被称为隐式原型
3. 可被构造的函数(类)
    - 每个可被new执行的函数(类),身上都会有一个属性:`prototype`,这个属性是个对象类型,用来**被**将来new执行创建出来的实例身上的隐式原型`__proto__`指向
    - `prototype`也被称为显示原型
    - 在`prototype`这个属性内,又有一个属性:`constructor`,用来指向当前`prototype`所属的函数
4. 对象的属性的读写规则
    - 向上查找,就近原则
        - 当使用对象某个属性时,会先在对象自身查找,如果有就使用,如果没有,会顺着隐式原型,继续查找,如果找到,使用,同时停止,如果还没,继续查找...直到顶层原型,还找不到,抛出undefined
    - 通过实例,查找某个属性,自身没有,其实就是找自身构造函数的`prototype`
    - 如果给构造函数的`prototype`添加属性或方法,意味着,将来的实例,也可以使用
5. 代码测试
    - 见2原型相关测试.html
    - 见3内置对象中的原型.html
6. 课外阅读
    - https://www.jianshu.com/p/a6f26c3756fe
    - https://www.jianshu.com/p/82b293043b2a
7. 构造函数和实例之间关系的检测
    - 可以检测简介联系
        - `console.log( Object.prototype.isPrototypeOf(实例) );`
        - `console.log( 实例 instanceof Object );`
# 三、继承
1. 概念
    - 让一个原本没有某个功能的对象(类),使用另一个对象(类)的功能
    - 使用权限 的 授权
2. 面向对象中的继承
    - 构造函数的原型 和 实例之间的关系
    - 继承关系
3. 构造函数(类)与构造函数(类)之间的继承
    - 改变this指向继承
    - 原型继承
        -
        -
        -
        -
    - 混合继承
    - ES6的class继承
4. 继承的应用场景:
    - 当有多个类,具有相同特点时,可以将共同点,抽象出一个公共类
        - 具体的类,先从公共类的身上继承得到公共方法或属性,再自定义添加当前类的方法或属性
 

以上是关于6.2 原型和实例的检测及继承的主要内容,如果未能解决你的问题,请参考以下文章

instanceof运算符的实质:Java继承链与JavaScript原型链

instanceof运算符的实质:Java继承链与JavaScript原型链

原型及继承

JS基础 类

实例对象及原型链

第6章 面向对象的程序设计 6.2 原型模式