gpt4 book ai didi

javascript - 原型(prototype)继承javascript

转载 作者:行者123 更新时间:2023-11-29 23:36:28 24 4
gpt4 key购买 nike

来自 Java 背景,Javascript 是我试图掌握的一个新世界。
我有点为原型(prototype)继承的确切工作原理而苦恼。
我从 __proto__ VS. prototype in JavaScript 得到了什么和其他资源很有帮助,但我真的想确保我掌握了这个话题。下列说法正确吗?

__proto__,对象的一个​​属性,是一个对象,表示对象的原型(prototype)。这个对象反过来也可以有一个 __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 中的对象或“实例”,意味着函数继承自对象。

关于javascript - 原型(prototype)继承javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46186118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com