gpt4 book ai didi

javascript - 在 JavaScript 中,当我们实例化派生对象时,原型(prototype)的函数隐藏在哪里?

转载 作者:行者123 更新时间:2023-11-30 08:57:44 24 4
gpt4 key购买 nike

我目前正在尝试弄清楚原型(prototype)继承在 JavaScript 中的具体工作原理。这是我目前试图解开的谜团。

假设我们设置如下结构:

var base = { greet : "hello" }

var child = function () {}

child.prototype = base;
child.prototype.protoSomething = function () {}

var instance = new child();

没什么好看的。现在让我们看看 instance 有哪些属性(自己的或其他的):

for(prop in instance) {
console.log(prop); // prints 'greet', 'protoSomething'
}

好的,所以它有greetprotoSomething,它们是instance自己的成员吗?

for(prop in instance) {
if(instance.hasOwnProperty(prop))
console.log(prop); // nothing is printed
}

不,自己的属性(property) list 是空的。它们在 instance 的原型(prototype)中吗?

if(instance.prototype === undefined) {
console.log("'instance' has no prototype"); // gets printed
}

好吧,真可惜,instance 没有分配原型(prototype)。那么,如果属性不是自己的 并且没有原型(prototype),那么它们从何而来?在这一点上,我觉得某种图表会非常好。

最佳答案

只有函数具有属性prototype

instance.constructor.prototype === base // return true

要获得对象的原型(prototype),您应该使用 Object.getPrototypeOf方法。

Object.getPrototypeOf(instance) === base // return true

关于javascript - 在 JavaScript 中,当我们实例化派生对象时,原型(prototype)的函数隐藏在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12008376/

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