gpt4 book ai didi

javascript - Object.create 在函数中不起作用

转载 作者:行者123 更新时间:2023-11-28 07:17:17 25 4
gpt4 key购买 nike

这是我的代码:

function Mammal(name){
this.name = name;
this.offspring = [];
}

Mammal.prototype.sayHello = function(){
return "My name is " + this.name + ", I'm a " + this.constructor.name;
}



function Cat(name, color){
Mammal.call(this, name);
this.color = color;
}

现在,当我使用此函数调用 Object.create 时:

function extendWithObjectCreate(child, parent) {
child.prototype = Object.create(parent.prototype);
child.prototype.constructor = child;
}

Object.create 不会返回链接到父原型(prototype)的对象。

可以在函数中使用 Object.create 吗?

最佳答案

当我这样做时,结果很好:

function Mammal(name) {
this.name = name;
this.offspring = [];
}

Mammal.prototype.sayHello = function() {
return "My name is " + this.name + ", I'm a " + this.constructor.name;
}

function Cat(name, color) {
Mammal.call(this, name);
this.color = color;
}

function extendWithObjectCreate(child, parent) {
child.prototype = Object.create(parent.prototype);
child.prototype.constructor = child;
}

extendWithObjectCreate(Cat, Mammal);

alert(new Cat('Muffin','blue').sayHello());

原型(prototype)正在运行。但是,由于 Object.create() 创建带有原型(prototype)的对象,因此不会在对象本身上设置原型(prototype)属性。因此,虽然 Cat.prototype.sayHello 存在,但 Cat.prototype.hasOwnProperty('sayHello') 为 false。

关于javascript - Object.create 在函数中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30710364/

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