gpt4 book ai didi

Javascript object.create 和 isPrototypeOf

转载 作者:行者123 更新时间:2023-11-29 22:25:46 24 4
gpt4 key购买 nike

var Person = function(name, age){
return Object.create(Object.prototype, {
name: {
value: name | "",
writable: true,
enumerable: true,
configurable: true
},
age: {
value: age | "",
writable: true,
enumerable: true,
configurable: true
}
});
};

var Boy = function(name, age){
return Object.create(Person(name, age), {
gender: {
value: "male"
}
});
};

var p = Person("John", 28);
var b = Boy();

console.log(p.isPrototypeOf(b)); // false?

我正在尝试了解 object.create 以及如何最好地使用它来避免使用 new 关键字的构造函数。到目前为止,我正在按照上面的方法处理它(虽然可能不是最好的方法,只是反复试验) - 并且遇到了如果我使用 object.create 我不再能够检查 instanceof 和对象类型。

有人建议使用 isPrototypeOf 来检查 - 我做错了什么,因为我上面的代码在检查时返回 false

谁能解释一下我哪里出错了?我对 JavaScript 中的原型(prototype)继承还是陌生的。

最佳答案

当然p不是b的原型(prototype)。

那是因为 Person 函数每次都会返回一个新的 Object。

尝试以下操作

var Boy = function(person, name, age){
return Object.create(person, {
gender: {
value: "male"
}
});
};


var p = Person("John", 28);
var b = Boy(p);
assert(p.isPrototypeOf(b))

关于Javascript object.create 和 isPrototypeOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521978/

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