前端开发面试总结(六)

302 阅读1分钟

prototype和__proto__的区别和联系

重点

  • 1、每一个对象都有一个__proto__属性,包括函数也是对象,也有__proto__属性。
  • 2、每一个构造函数都有一个prototype方法。
  • 3、每个对象的__proto__属性都指向自身构造函数的prototype。(obj.__proto__等于function.prototype)
1、概念

proto

  • 对象特有
  • 该属性指向对象本身的构造函数的prototype
  • 所以对象可以从prototype中继承属性和方法

prototype

  • 该属性是函数特有
  • 该属性可以用于存储需要被共享的属性和方法

constructor

  • 函数特有,定义在prototype里面
  • 使用new创建实例的时候,实例会继承prototype中的属性和方法
2、既是函数也是对象

Object:既是对象,也是构造函数

  • 作为对象:Object.__proto__ === Function.prototype
  • 作为函数:Object.prototype是原型链的顶端,Object.prototype.__proto__ === null

Function:既是对象,也是构造函数

  • 作为对象:Function.__proto__ === Function.prototype
  • 作为函数:Function.prototype的函数和属性可以被实例共享,Function.prototype.__proto__ === Function.