当前位置: 首页 > 知识库问答 >
问题:

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

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

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

共有3个答案

邵君植
2024-03-04

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

慕光霁
2024-03-04

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

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


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

季俭
2024-03-04

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

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

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

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

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

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

 类似资料:
  • 问题内容: 我继承了其他开发人员编写的一些JavaScript代码。他不喜欢我们在整个项目中使用的网格组件,因此他决定编写自己的网格组件。他写的表格无法对日期进行排序,因为它只能绑定到字符串/数字。他在使用日期之前将所有日期转换为字符串。我查看了他编写的date函数的字符串格式,发现可以将具有原始值的date属性添加到字符串中,然后在排序时查看该字符串是否具有date属性并基于此进行排序。但是,似

  • 在使用一个库的时候碰到了一个很奇怪的问题,有个class实例化生成的对象,假设为A 对A的属性进行修改 打印A发现,其中的a属性并没有变,但是直接打印A.a是改变了的,请问这种情况大概会是什么原因呢,是有什么知识盲区吗,目前知道a属性是不可删除的属性,但是一般对象设置configurable=false也不会出现这种情况,如果不允许修改的话应该也会报错。。 (PS:A只是为了表述简化的例子,并不是

  • 问题内容: 我要返回一个Mongoose文档,并希望在发送之前向其中添加一些元数据。但是,我无法添加任何属性,我不确定为什么。我检查了它是否可以使用Object.isExtensible(doc)扩展。 可能是什么问题? 问题答案: 啊..我的对象是一个Mongoose文档,不允许添加属性。解决方案是将返回的文档转换为普通对象,或者在查询中调用lean()。

  • 问题内容: (用Python shell编写) 为什么不允许对象向其添加属性? 问题答案: 请注意,实例没有属性: 一个在派生类中说明此行为的示例: 引用以下文档: […]声明采用一系列实例变量,并在每个实例中仅保留足够的空间来为每个变量保存一个值。因为未为每个实例创建空间,所以节省了空间。 编辑:要从评论中回答ThomasH,OP的测试类是“旧式”类。尝试: 您会注意到有一个实例。对象类可能没有

  • 问题内容: 我有以下代码: 这段代码: 根据我的Python知识,我会说它覆盖/ ,但是我不确定。你能在这里阐明一下吗? 编辑:我对并不特别感兴趣。我一直在想对象。 问题答案: 我的猜测是,datetime的实现使用slots以获得更好的性能。 使用时,解释器仅为列出的属性保留存储空间,而没有其他内容。这样可以提供更好的性能并使用更少的存储空间,但这也意味着您不能随意添加新属性。 在此处阅读更多信

  • 问题内容: 考虑以下代码示例: 从PHP 5.3开始,这将产生(类似)以下输出: 但是下面的代码: …仅发出错误: 为什么将这些属性“添加”到对象?请注意,它们没有定义为手册页DateTime`上的类的一部分。 问题答案: 发生了一些魔术,但这很简单。 DateTime类没有您要访问的公共变量“date”。但是,作为PHP工作方式的副作用,在该类上调用print_r或var_dump时会创建一个变