经典面试题prototype 和 proto 区别是什么

49 阅读1分钟

原型是为了实现对象间的联系,解决构造函数无法数据共享而引入的一个属性,而原型链是一个实现对象间联系即继承的主要方法

  • prototype是构造函数的属性

  • __proto__是每个实例都有的属性,可以访问 [[prototype]] 属性

  • 实例的__proto__与其构造函数的prototype指向的是同一个对象

  • 显式原型

    prototype 每一个函数在创建之后,便会拥有一个prototype属性,这个属性指向函数的原型对象,显示原型的作用是用来实现基于原型的继承与属性的共享

    隐式原型

    _proto__上面说的这个原型是JavaScript中的内置属性prototype,此属性继承自object对象,但Firefox、Safari和Chrome在每个对象上都支持一个属性_proto,隐式原型的作用是用来构成原型链,实现基于原型的继承