来自 Java 背景,Javascript 是我试图掌握的一个新世界。
我有点为原型继承的工作原理而苦苦挣扎。
我从 __proto__ VS得到了什么。JavaScript和其他资源中的原型很有帮助,但我真的想确保我掌握了这个主题。以下陈述是否正确?
__proto__
,对象的属性,是表示对象原型的对象。这个对象又可以有一个__proto__
属性,直到 Object 对象到达链的末端。
prototype
是函数对象的属性,也是对象本身。当使用new
关键字从函数实例化对象时,__proto__
该新实例的 将成为prototype
构造函数的属性。例如:
let random = new Array();
console.log(random.__proto__); //logs the object which is the prototype of random
console.log(Array.prototype); //logs the same object as random.__proto__
console.log(random.__proto__.__proto__); // logs the Object prototype object
console.log(Object.prototype); // logs the same object as random.__proto__.__proto__
此外,当对象相互测试是否相等时,它们是以下代码中的相同对象:
console.log(random.__proto__ === Array.prototype); // logs true
console.log(random.__proto__.__proto__ === Object.prototype ); // logs true
由于通过引用测试对象是否相等,这是否意味着实际上存在一个Object.prototype
对象实例并且所有对象都__proto__
引用该实例?
提前致谢。