2

来自 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__引用该实例?

提前致谢。

4

1 回答 1

1

如果你 console.log(typeof(Ojbect)) 和 console.log(typeof(Array)) 你有一个“函数”所有不是原始类型(未定义,null ...)都是一个对象或“一个实例” " 在 JavaScript 中,表示函数从对象继承。

于 2017-09-12T22:31:59.833 回答