原型继承javascript

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

提前致谢。


如果你的console.log(typeof(Ojbect))和console.log(typeof(Array))你有一个“函数”所有不是基本类型的(undefined,null ...)是一个对象或“一个实例“在JavaScript中,意味着函数从对象继承。

链接地址: http://www.djcxy.com/p/30063.html

上一篇: prototypical inheritance javascript

下一篇: Javascript Prototypal Inheritance Doubt II