gpt4 book ai didi

javascript - admin.attributes.isAdmin 被赋值。而 guest.attributes.isAdmin 没有分配任何内容。请让我明白

转载 作者:行者123 更新时间:2023-11-30 14:21:19 54 4
gpt4 key购买 nike

我试图理解这段被 chop 的代码:

var User = function() {};

User.prototype.attributes = {
isAdmin: false
};

var admin = new User("Sam"),
guest = new User("Bob");

admin.attributes.isAdmin = true;

alert(admin.attributes.isAdmin);
alert(guest.attributes.isAdmin);

它的输出将为真(两次)

请帮助我理解这个概念。非常感谢任何帮助。谢谢

最佳答案

您可以使用 attributes 的副本,因为通过寻址 attributes,您会覆盖所有实例的值。

var User = function() {
this.attributes = Object.assign({}, this.attributes);
};

User.prototype.attributes = { isAdmin: false };

var admin = new User("Sam"),
guest = new User("Bob");

admin.attributes.isAdmin = true;

console.log(admin.attributes.isAdmin);
console.log(guest.attributes.isAdmin);

Javascript 获取一个属性并查看它是否退出。如果不存在,它会在原型(prototype)链中查找该属性是否存在。如果存在,则取这个值。

赋值也是如此。

更详细的查看,可以访问Inheritance and the prototype chain

关于javascript - admin.attributes.isAdmin 被赋值。而 guest.attributes.isAdmin 没有分配任何内容。请让我明白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52698272/

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