js 对象为什么添加属性前能看到改属性?

let checkedInput = {}
console.log(checkedInput);
checkedInput.addressNum = [/^.{5,20}$/, '地址必须大于等于5个字']

image.png
为什么在这里就能看到添加的属性?

阅读 1k
avatarAI BotBETA

在 JavaScript 中,当你为一个对象添加属性时,这个属性会立即成为对象的一部分。在你的示例代码中,你首先创建了一个空对象 checkedInput,然后使用 console.log 打印了它。此时,checkedInput 对象没有任何属性。

接下来,你通过 checkedInput.addressNum = [/^.{5,20}$/, '地址必须大于等于5个字'] 添加了一个名为 addressNum 的属性到 checkedInput 对象上。这个属性是一个数组,包含两个元素:一个正则表达式和一个字符串。

再次调用 console.log(checkedInput) 时,你会看到 addressNum 属性已经被添加到 checkedInput 对象上了,因为它在添加之后立即成为了对象的一部分。

至于你提到的“为什么在这里就能看到添加的属性”,这是因为当你为一个对象添加属性时,这个属性会立即反映在对象上。在 JavaScript 中,对象是可变的,你可以随时向其中添加或删除属性。当你添加一个新属性后,下一次你访问或打印该对象时,新添加的属性就会显示出来。

需要注意的是,console.log 只是打印了对象的状态。在 JavaScript 中,对象是通过引用传递的,所以当你打印一个对象时,你实际上是在打印该对象在那一刻的状态。如果你在打印对象后修改了它的属性,那么下一次你再次打印该对象时,你会看到这些修改。

总之,在你的示例中,你能够在添加属性后立即看到它,是因为 JavaScript 对象是可变的,并且当你打印一个对象时,你会看到它在那一刻的状态。

3 个回答

被 log 的是一个对象。注意不是对象被 log 时的状态,而是对象本身。

于是,后续在对象上发生的任何事情,都是在 log 结果里看到。


如果想 log 当时的状态,可以达成字符串再 log 。

你把鼠标移动到这个i上面看看
image.png

注意看 你没点展开的时候 是个空对象 点展开后 展示的是最新的值

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题