__proto__ 和 prototype怎么理解啊
时间: 2023-11-22 10:46:03 浏览: 80
在JavaScript中,每个对象都有一个__proto__属性,它指向该对象的原型。而每个函数都有一个prototype属性,它是一个对象,它的作用是为该函数创建的实例对象提供共享的属性和方法。当我们访问一个对象的属性或方法时,如果该对象本身没有该属性或方法,那么JavaScript会沿着该对象的__proto__属性指向的原型链向上查找,直到找到该属性或方法或者到达原型链的尽头。而原型链的构建就是通过对象的__proto__属性和函数的prototype属性来实现的。因此,__proto__和prototype都是实现原型链的工具。
相关问题
Function.prototype.__proto__.__proto__ === null
这表达式是用来检查 Function.prototype 对象的原型链。根据 JavaScript 的原型继承机制,一个对象的 __proto__ 属性指向其构造函数的原型对象。因此,Function.prototype.__proto__ 指向 Object.prototype,再往上一级的原型是 null。
所以,Function.prototype.__proto__.__proto__ === null 是成立的。
console.log(mc.__proto__.__proto__.__proto__);
这段代码输出的是 Minecraft 对象原型链上第三级原型对象的内容。根据 JavaScript 的原型链机制,这个对象应该是 Object.prototype,也就是说输出的内容应该是 Object.prototype 的属性和方法。这些属性和方法包括 toString、valueOf、hasOwnProperty 等等。
阅读全文