![]() |
1
1
1) 为什么控制台.trace仅返回(匿名)
换句话说,你必须打电话控制台.trace() 从内部 酒吧 ),然后是调用函数的父函数的名称( 福 匿名的 函数-主执行线程,所有代码都从这里开始。 每当您在devtools中执行某些代码时(我假设您正在使用这些代码),它总是以包装匿名函数的形式在这个全局执行上下文中执行。既然你打电话来了控制台.trace()立即从这个匿名函数,这是什么打印- . 也,控制台.trace()接受参数。当你调用控制台.trace(),可以使用任意数量的参数,这些参数只需在堆栈跟踪之前打印到控制台。自Object.defineProperty属性()返回要为其定义新属性的对象,这是要传递给的对象控制台.trace(). 太长,读不下去了 - 控制台.trace()首先将其参数打印到控制台(即。 目标 2) 这个,定义属性等等第三个论点Object.defineProperty属性是一个简单的物体, ! 它的属性在初始化过程中立即被解析,只有在那个时候它才被传递到defineProperty中。这意味着以下代码在功能上与您的代码相同:
您还必须知道,当您在主执行上下文中运行代码时(例如,从devtools控制台调用代码), 这 指 更有趣的是,这个.a(或window.a)在你完成之后变成了2对象.原型.a=2。这是因为窗口仍然是一个 对象 对象的原型
看到区别了吗?这更有意义吗?当然,执行此操作后,代码将不再工作,因为this.a将再次变得未定义。 不能 价值 可枚举的 ,如果对其实现set()&get()方法,则应该能够获得所需的行为。另外,我相信你可以使用代理来获得类似的行为。没有提供更多的细节,我建议您先阅读函数执行上下文,然后再阅读一些关于原型的内容,也许还有一些关于堆栈溢出的关于 . 在那之后,你可以试着研究提议的解决方案。 |
![]() |
John Smith · 在ASM中实现递归,无需过程 8 年前 |
![]() |
Sweeper · 为什么这个调用堆栈如此奇怪? 9 年前 |
![]() |
Gerald Chu · AIX:_snw中的malloc(无符号长)? 11 年前 |
![]() |
user3374131 · NodeJS POST保持挂起状态 11 年前 |
![]() |
Jacob Krieg · 直接访问函数堆栈 11 年前 |
![]() |
Milad Khajavi · 如何创建会引发堆栈溢出异常的无限递归? 12 年前 |
![]() |
Jonas Byström · 删除Eclipse/JUnit调用堆栈截断 12 年前 |