prototype 和 __proto__

是什么?

  • prototype(显示原型):每个函数都有一个prototype属性
  • __proto__(隐式原型):每个实例对都会有__proto__属性

两者有什么关系?

        一般,构造函数的显示原型和其实例对象的隐式原型是指向同一个地方的,这个地方叫做原型对象

//构造函数
function Person(){}
//p1实例对象
let p1 = new Person()
console.log(Person.prototype === p1.__proto__) // true

  在js中有一句话叫:万物皆对象!(那也可以理解成在js中万物都包含__proto__属性吧)

let num = 1
console.log(num.__proto__ === Number.prototype) //true
let str = 'abc'
console.log(str.__proto__ === String.prototype) //true
let n = true
console.log(n.__proto__ === Boolean.prototype) //true
let obj = {}
console.log(obj.__proto__ === Object.prototype) //true
function fn(){}
console.log(fn.__proto__ === Function.prototype) //true
      
console.log(Object.__proto__ === Function.prototype) //true
console.log(Number.__proto__ === Function.prototype) // true
console.log(Function.__proto__ === Function.prototype) //true

 可以看出:

  • number类型的数据是Number构造函数的实例
  • 函数是Function构造函数的实例
  • Object、Number、function Function()等其实本质上也是一个函数,所以他们也都是Function构造函数的实例
  • Object的隐式原型是null

面试题:什么是原型?什么是原型链?

原型原型分为显示原型和隐式原型,每个对象都有一个隐式原型,它指向自己的构造函数的显示原型

原型链:就是多个实例对象的__proto__组成的集合 

  • 所有实例的__proto__都指向他们构造函数的prototype
  • 所有的prototype都是对象,自然他们的__proto__指向Object()的prototype
  • 所有的构造函数的隐式原型指向的都是Function()的显示原型
  • Object的隐式原型是null

相关推荐

  1. prototype __proto__

    2024-01-05 10:42:02       38 阅读
  2. 经典面试题prototype proto 区别是什么

    2024-01-05 10:42:02       14 阅读
  3. 原型原型链的区别,__proto__prototype的区别

    2024-01-05 10:42:02       20 阅读
  4. prototype、__proto__、constructor、原型、原型链

    2024-01-05 10:42:02       43 阅读
  5. <span style='color:red;'>Prototype</span>

    Prototype

    2024-01-05 10:42:02      19 阅读
  6. SpringBoot当中的SingletonPrototype详解

    2024-01-05 10:42:02       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-05 10:42:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-05 10:42:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-05 10:42:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-05 10:42:02       18 阅读

热门阅读

  1. 游戏策划:游戏开发中的关键环节

    2024-01-05 10:42:02       38 阅读
  2. 远程控制软件排名(2024)

    2024-01-05 10:42:02       38 阅读
  3. Android 13.0 recovery竖屏界面旋转为横屏

    2024-01-05 10:42:02       39 阅读
  4. 智能旅游代步车控制系统设计

    2024-01-05 10:42:02       36 阅读
  5. 前端中级算法题

    2024-01-05 10:42:02       37 阅读