gpt4 book ai didi

javascript - 为什么 console.log 不会触发代理 getter 陷阱?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:53:24 27 4
gpt4 key购买 nike

我有以下代码:

let p = new Proxy([1, 2, 3], {   
get: function() {   
console.log('get')   
}   
})
console.log(p)

我认为 Proxy 应该代理关于 [1,2,3]一切

当我log 值时,它应该从[1,2,3] 中读取值,因此应该触发getter。

但是当我在getter中设置断点时,断点没有命中?

为什么console.logconsole.table不触发getter函数?

最佳答案

那是因为您正在记录 Proxy 对象本身。
浏览器控制台可以访问其内部状态,这是一个具有两个或三个内部属性的对象:[[target]] , [[handler]][[IsRevoked]] .

您可能会注意到 Chrome 默认会展开 [[target]]在其折叠的消息中:

console output of Chrome

虽然 Firefox 默认选择仅公开 Proxy 对象 (并且不公开 [[isRevoked]] 内部,他们将 <target><handler> 设置为 null 以表示已撤销代理)。 enter image description here

至于如何他们能够不触发陷阱,他们采用内部 [[target]] 快捷方式并直接访问原始对象。

关于javascript - 为什么 console.log 不会触发代理 getter 陷阱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55630414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com