gpt4 book ai didi

javascript - 为什么我的对象的原型(prototype)未定义?

转载 作者:行者123 更新时间:2023-12-01 14:02:22 25 4
gpt4 key购买 nike

我像这样创建了一个 Car 对象。

var Car = Object()

然后我给它添加了一些属性

Car.price = 5000;
Car.color = "red";

然后我创建了一个它的实例

var car1 = Object.create(Car);

我不明白的是,当我调用 car1.prototypeCar.prototype 时,我得到了 undefined

根据我的阅读,每个对象都是某物的原型(prototype)。

有人可以解释为什么它是“未定义的”吗?

最佳答案

every Object is a prototype of something

没有。每个对象都有一个原型(prototype)(根对象除外)。但是,只有函数具有 prototype property

该属性的值将成为通过调用函数作为构造函数创建的对象的原型(prototype)(例如 var obj1 = new Constr();)。

What I don't understand is, when I call car1.prototype or Car.prototype, I get undefined.

正如刚才所解释的,只有函数 具有prototype 属性。 car1Car 是对象,因此没有这样的属性。

要获取任意对象的原型(prototype),可以使用Object.getPrototypeOf :

var car1Prototype = Object.getPrototypeOf(car1);

Then I created an instance of it like var car1 = Object.create(Car);

您没有创建 Car 的实例。如果您创建了一个新对象并将其原型(prototype)显式设置为 Car。或者,您可以将 Car 定义为构造函数:

function Car(price, color) {
this.price = price;
this.color = color;
}

var car1 = new Car(5000, 'red');

现在 Car 是一个函数,Car.prototype 将产生 car1 的原型(prototype),即

Car.prototype === Object.getPrototypeOf(car1);

另见 Introduction to Object-Oriented JavaScript

关于javascript - 为什么我的对象的原型(prototype)未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26575267/

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