gpt4 book ai didi

javascript - 为什么这在 JavaScript 中评估为未定义?

转载 作者:行者123 更新时间:2023-11-30 07:39:16 24 4
gpt4 key购买 nike

为什么最后一行在 JavaScript 中计算为未定义?

function Boat() {}

var myBoat = new Boat();

console.log(Boat.prototype); //Boat(){}

console.log(myBoat.__proto__); //Boat(){}

console.log(myBoat.__proto__.prototype); //undefined - why is this not Boat(){}

最佳答案

__proto__ 属性指的是实例构造函数的原型(prototype)。所以你的第二个例子记录了与第一个完全相同的对象:

Boat.prototype === myBoat.__proto__;

Boat.prototype 的原型(prototype)是undefined 因为Boat.prototype 不是函数。事实上,它实际上是 Object 的一个实例,所以:

Boat.prototype.__proto__ === Object.prototype;

并且通过扩展:

myBoat.__proto__.__proto__ === Object.prototype;

旁注 - 不推荐使用 __proto__ 属性。 Object.getPrototypeOf应尽可能改用:

Boat.prototype === Object.getPrototypeOf(myBoat); // Equivalent to 1st example

关于javascript - 为什么这在 JavaScript 中评估为未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21603923/

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