外部对象,进入函数后对其添加属性后,离开函数后,用调试器看不到这些添加的属性?

2022-07-28 11:14:13 +08:00
 abcbuzhiming
function test(obj){
obj.c = 'c';
}
var obj = {};
test(obj);
obj.a = 'a';
obj.b = 'b';
console.log(obj);


在 chrome 调试器里,打断点在 console.log(obj) ; ,然后鼠标移动到 obj 上,会看到弹出窗口里,你会发现只能看到 obj.a 和 obj.b ; obj.c 是看不到的,但是,代码可以用,console.log 也能打印出来.

实际的例子比这个复杂,但是简化后就是我上面的问题:为什么函数内给 obj 添加的属性,调试器在函数外看不见.
1499 次点击
所在节点    JavaScript
6 条回复
xiangyuecn
2022-07-28 11:18:30 +08:00
autumn426
2022-07-28 11:37:39 +08:00
变量的作用域吧
heishu
2022-07-28 17:52:54 +08:00
把你例子直接在浏览器控制台中执行是可以看到 c 的,正常来说是可以看到这些添加属性的,莫不是你实际用的地方深克隆过?
laolaowang
2022-07-29 11:28:08 +08:00
这不是能看到么?
abcbuzhiming
2022-07-29 19:26:50 +08:00
@heishu 我有点搞不懂了,我写的代码是我简化后的,实际的代码比这多的多,但是看来看去,函数里也仅仅是给予新属性而已。你说的深克隆是什么意思?


@laolaowang 简化后的代码可以看到,但是原始代码确实看不到
codehz
2022-07-30 14:25:33 +08:00
@abcbuzhiming console.log 不是实时评估的,log 当时没有的话就没了(但是点击展开按钮时又是实时的了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/869191

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX