• 3分钟简单了解 prototype 和 __proto__


    关于prototype

    1. 所有的函数都会有一个prototype属性,属性值是一个普通对象;

    2. 当我们去new一个构造函数的实例时,构造函数的原型对象(prototype)会被赋值给它实例的[[Prototype]]属性上;

    3. prototype可被称为“显式原型”。

    关于__proto__

    1. 首先它未被ECMAScript标准化,但却被被大多数浏览器厂商所支持;

    2. 所有对象(null,undefined除外)都具有__proto__属性;

    3. 对象的__proto__属性指向它的构造器的prototype属性;

    4. __proto__ 可被称为“隐式原型”;

    5. ES2015对其进行了标准化。

    关于两者

     1 // 普通函数
     2 function func() {}
     3 
     4 func.prototype // { constructor: function func(), ... }
     5 
     6 // 构造函数
     7 function F() {}
     8 
     9 F.prototype // { constructor: function func(), ... }
    10 
    11 // 实例测试
    12 var f = new F()
    13 
    14 f.__proto__ // { constructor: function func(), ... }
    15 
    16 f.__proto__ === F.prototype // true
    17 
    18 // ES2015标准化[[Prototype]]属性,Object.getPrototypeOf/Object.setPrototypeOf
    19 Object.getPrototypeOf(f) === F.prototype
  • 相关阅读:
    Java面试之对象拷贝
    Java面试之反射
    Java面试之多线程
    Java面试之容器
    Java面试之基础一
    Java面试之Hibernate
    Mysql进阶
    高并发,不怕不怕「限流算法第一把法器:计数器法」
    SpringBoot加载速度慢
    idea VM options参数优化
  • 原文地址:https://www.cnblogs.com/fanqshun/p/9976404.html
Copyright © 2020-2023  润新知