gpt4 book ai didi

javascript - 为什么对象的构造函数对应于父对象的构造函数?

转载 作者:搜寻专家 更新时间:2023-11-01 04:16:49 24 4
gpt4 key购买 nike

<分区>

在下面的代码中,orange 的构造函数记录为它父级的构造函数 (Plant()) 而不是 Fruit()是它的。为什么会这样?

(抱歉随机对象。现在是半夜,我只是在学习一些 JavaScript。没有考虑太多在现实世界中有意义,只是将它们作为示例输入以了解原型(prototype)更好。)

function Plant(name, colour) {
this.name = name;
this.colour = colour;
}

Plant.prototype.print = function () {
return "I'm a " + this.name.toLowerCase() + " and I'm " + this.colour.toLowerCase() + ".";
}

var mango = new Plant("Mango", "Orange");
console.log(mango.constructor);

function Fruit(type, isOrganic) {
this.type = type;
this.isOrganic = isOrganic;
}
Fruit.prototype = new Plant("Orange", "Orange");

var orange = new Fruit("staples", true);
console.log(orange.constructor);

对于两个 console.log() 调用,我都得到一个 Plant(name, colour),而我认为我应该为第二个调用得到 Fruit(type, isOrganic)。我在做什么/理解错了什么?

http://jsfiddle.net/eHZf8/

更新:与上面一致,如果我做以下...

Fruit.prototype = {
hello: "World"
};

...而不是我在上面的例子中所做的,我得到 Object() 作为对象的构造函数,即使我用 new Fruit() 创建它>.

为什么对象的构造函数属性包含用于构建它的沿袭中最旧的函数而不是最新的函数?

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