prototype与__proto__有什么区别
时间: 2023-06-08 20:09:28 浏览: 93
prototype和__proto__都是JavaScript中的特殊属性。
prototype是一个对象,用于定义构造函数的属性和方法。在JavaScript中,每个对象都有一个原型链,该原型链指向一个原型对象,该原型对象保存着该对象的属性和方法定义。由于构造函数也是对象,因此它们也有一个原型对象,该对象通过构造函数的prototype属性进行定义。
__proto__是一个指向对象原型的指针。它指向该对象的构造函数的原型对象。当访问对象的属性或方法时,如果该对象没有该属性或方法,则会沿着原型链向上查找,直到找到该属性或方法或者查找到原型链的最后一个对象。
因此,prototype是一个对象的属性,而__proto__是一个属性指针。prototype用于定义一个构造函数的属性和方法,而__proto__用于实现属性和方法的继承。
相关问题
Function.prototype.__proto__.__proto__ === null
这表达式是用来检查 Function.prototype 对象的原型链。根据 JavaScript 的原型继承机制,一个对象的 __proto__ 属性指向其构造函数的原型对象。因此,Function.prototype.__proto__ 指向 Object.prototype,再往上一级的原型是 null。
所以,Function.prototype.__proto__.__proto__ === null 是成立的。
prototype和__proto__的区别
prototype 是构造函数的一个属性,它指向了一个对象。这个对象的所有属性和方法都可以被该构造函数的实例继承。
__proto__ 是每个对象都有的属性,它指向了这个对象的原型对象。即指向了该对象的构造函数的 prototype 属性指向的对象。
总的来说,prototype 是构造函数的属性,__proto__是对象的属性。
阅读全文