Can';在javascript对象上设置属性
全部要点: Self是一个js模型,其中包含所有方法Can';在javascript对象上设置属性,javascript,node.js,Javascript,Node.js,全部要点: Self是一个js模型,其中包含所有方法 Moodboard.prototype = { 守则: var self = this; self.isArchived = true; self.foo = true; console.log('is archived property', self.isArchived); console.log('self object', self); return self.
Moodboard.prototype = {
守则:
var self = this;
self.isArchived = true;
self.foo = true;
console.log('is archived property', self.isArchived);
console.log('self object', self);
return self.save();
此代码的结果:(注意设置了self.foo)
[truestandaloneisArchived
property,但false
property-inside-object][1]“>
为什么在设置self.foo时self.isArchived没有被设置
另外,为什么在执行object.property时设置它,而在仅记录对象时不设置它
TLDR;
Console.log()是异步的。在我的屏幕截图中,它显示了设置为我想要的属性。当您展开Console.log()时,它似乎“重新触发”事件并可以获得不同的值。这是因为save()方法也是异步的,并操作原始对象。问题源于console.log是异步的:当您记录self对象时,只记录一个引用,当您单击它时,它会被评估 注意您的:在控制台消息(未打开状态)的第一行中,
isArchived
如预期的那样是true
。只有当您手动打开它以进一步检查时,它才会被列为false
。可能在日志记录和手动打开之间有其他东西在修改它
(我敢打赌,如果您直接记录self.isArchived,您将不会看到这种行为,因为它是一个将立即打印的基本值。)问题源于console.log是异步的:当您记录self对象时,只会记录一个引用,当您单击它时会对其进行计算 注意您的:在控制台消息(未打开状态)的第一行中,
isArchived
如预期的那样是true
。只有当您手动打开它以进一步检查时,它才会被列为false
。可能在日志记录和手动打开之间有其他东西在修改它
(我打赌,如果您直接登录self.isArchived,您不会看到这种行为,因为它是一个将立即打印的原始值。)
.isArchived
显示为false。因此必须设置它。我们还应该看到更多的代码吗?isArchived
可能是受保护的属性。有关属性的更多信息请注意,isArchived
在屏幕截图中对象的单行表示中显示为true
。Moodboard后面的行显示>IsArrchived:true
请查看编辑。上载了完整的要点。IsArrchived
显示为false。因此必须进行设置。还有更多代码需要查看吗?IsArrchived
可能是受保护的属性。有关属性的更多信息请注意,IsArrchived
在您的对象的单行表示中显示为true
r屏幕截图…Moodboard后的一行显示isArchived:true
请查看编辑。上载完整注册表可能是因为您正在更改isArchived,保存()函数?所以我注释掉了save方法,并正确设置了它。它一定在那里。我上传了完整的要点。你现在应该可以看到它了。也许你正在更改save()中的isArchived函数?所以我注释掉了save方法,它被正确设置。它一定是在那里。我上传了一个完整的要点。你现在应该可以看到它了。