zoukankan      html  css  js  c++  java
  • js中的原型与原型链详解

    js中的原型与原型链详解

    记住下面三句话就可以理解原型:

    1. 所有的函数数据类型都天生自带一个属性Prototype(原型)这个属性的值是一个对象,浏览器会默认给他开辟一个堆内存
    2. 在浏览器给prototype开辟的堆内存当中有一个天生自带的属性是constructor,这个属性存储的值是当前函数本身
    3. 每一个对象都有一个__proto__的属性,这个属性指向当前实例所属类的prototype(如果不能确定他是谁的实例,都是Object的实例)

    原型链:如果引用构造函数的实例想要查找某个属性p的话:

    1. 首先会在实例内部属性中找一遍
    2. 接着会在实例.proto(构造函数.prototype)中找一遍
    3. 如果实例中还是没有,此时程序不会灰心,它会继续在实例的prototype的.__proto__中寻找,直到寻找到Object.prototype才结束,没有的话返回undefined

    这种搜索的轨迹,形似一条长链, 又因prototype在这个游戏规则中充当链接的作用,于是我们把这种实例与原型的链条称作:原型链

    判断原型与实例的关系

    1. 第一种是使用 instanceof 操作符, 只要用这个操作符来测试实例(instance)与原型链中出现过的构造函数,结果就会返回true
    alert(instance instanceof Object);//true
    alert(instance instanceof Father);//true
    alert(instance instanceof Son);//true
    
    1. 使用 isPrototypeOf() 方法, 同样只要是原型链中出现过的原型,isPrototypeOf() 方法就会返回true
    alert(Object.prototype.isPrototypeOf(instance));//true
    alert(Father.prototype.isPrototypeOf(instance));//true
    alert(Son.prototype.isPrototypeOf(instance));//true
    
  • 相关阅读:
    5-1 CSS命名规范
    npm
    Maven的安装与配置
    Emmet
    计算机常识——IP/TCP协议
    判别分析——距离判别
    R语言创建空向量、矩阵
    Rstudio——基本功能及操作
    R语言——source函数
    R语言关于warning问题——关于options函数
  • 原文地址:https://www.cnblogs.com/my466879168/p/12332915.html
Copyright © 2011-2022 走看看