问题标签 [es6-proxy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
486 浏览

javascript - 使用 javascript 代理跟踪方法调用

两个处理程序都可以很好地拦截方法调用,但是在此过程中方法对象上的任何属性都会丢失。有没有办法绑定正确的上下文并在代理返回的对象中保留方法属性。

0 投票
1 回答
312 浏览

javascript - dispatchEvent(new Proxy(event, {}) 不起作用

我正在开发一个使用事件的应用程序。应用程序的模块在单独的容器中执行,我考虑使用代理来驯服被触发的事件。但是,我似乎无法dispatchEvent接受已代理的事件。

以下失败:

任何人都有任何想法如何dispatchEvent接受代理?

0 投票
0 回答
56 浏览

javascript - 使用代理通过自设置方法将回调附加到对象

我正在寻找在一个对象(Counter下面的实例)上创建一个代理,该代理在更改时将导致数组的所有函数callbacks被触发(该数组将使用来自计数器实例的数据从任何 React 组件callbacks填充.. () => this.setState(). 这样,将触发重新渲染并反映新数据)。一个约束是对象只能从其自身内部进行操作(实例方法incrementdecrement)。另一个限制是callbacks即使在初始化对象和代理之后(然后在调用实例方法时触发),数组也需要可编辑。我正在尝试使用这种技术根据计数器类的活动重新渲染 React 组件。这是我目前的尝试(增加或减少时不会重新渲染)。非常感谢您花时间阅读本文,我非常感谢您的任何建议或建议!

0 投票
3 回答
6367 浏览

typescript - 使用带有 jest 的 typescript 的 identity-obj-proxy 时返回未定义

我在我的项目中使用 jest 和打字稿。我使用 identity-obj-proxy 对我的所有 .ts 文件都未定义,但 .js 文件按预期工作。

这是我的 tsconfig.json:

这是我开玩笑的配置:

我的测试文件(.ts):

如果我将文件另存为 .js ,那么一切似乎都可以正常工作,但不能在 .ts 或 .tsx 文件中。

0 投票
9 回答
14415 浏览

javascript - 如何将 ES6 代理转回普通对象(PO​​JO)?

我正在使用一个将事物转换为 ES6 代理对象的库,以及另一个我认为令人窒息的库,因为我将其中一个传递给它(我的代码是一个讽刺,我知道),我无法弄清楚如何取消代理代理对象。

但我只是愚蠢。代理可以做任何事情!

0 投票
1 回答
24 浏览

javascript - 代理仅在尝试返回不同值时通过 get 方法返回目标

每次通过 get 方法调用代理时,我都试图只给用户字符串“Hello”。相反,我得到一个空对象,这是我的目标。

我尝试使用 String、Reflect 等类,但没有得到积极的结果

预期:“你好”
结果:{}

0 投票
1 回答
858 浏览

javascript - 如何从代理数组中删除或插入项目?

我正在尝试使用 JavaScript 代理检测对象数组中的更改。

问题:任何时候数组发生变化,比如删除或插入,我都想得到那个被删除或插入的项目。

当前代码

当前想法: 我做了一些解决方法来从数组中获取已删除的项目,但它仅适用于pop()方法,因为它从数组中删除了最后一项。但是我需要一种方法来获得更改,即使它是使用splice方法 orpush进行的pop

谢谢。

[更新] 我找到的解决方案:

https://github.com/ElliotNB/observable-slim 我使用这个库来检测数组的变化,我也能够检测到数组内嵌套属性的变化。这正是我想要的。

我使用这个库的原因是因为它使用了代理。

0 投票
1 回答
55 浏览

javascript - Javascript 代理句柄返回语句

我正在使用代理来处理对象的创建,而不必声明对象的所有“父键”。

而不是这个

那部分很好而且功能齐全,但我遇到的问题是,我经常忘记我需要返回目标对象而不是代理,这经常在我的代码中产生非常奇怪的行为。

据我所知,代理对象无法处理返回语句。所以我正试图找到一种方法来做到这一点。像这样的东西:

有没有办法做到这一点?

谢谢。

编辑

我正在使用它来覆盖从较大产品到客户规格的配置。所以我正在使用数百行配置。使用代理可以让我构建配置文件以供将来更清晰地阅读。它还允许我将原始配置文件中的所有配置组合在一起,以评论更改它们的原因,而无需上下滚动对象。

0 投票
0 回答
59 浏览

javascript - JavaScript 代理使用

我正在学习 ES6 并找到了一个 Proxy 对象。总的来说,我知道它是如何工作的。但我关于代理使用的问题。作为我附加的示例,代理是从用户对象创建的。要“监听”或“捕获”代理发生的事件,我们应该使用代理对象,但这不是我想要的。有没有办法“监听”原始(用户)对象发生的事件?

为了清楚起见,让我们想象一个情况:我有一些对象,它工作不正确。我想弄清楚它出了什么问题并创建一个代理。那么,接下来在我的代码中我应该使用代理而不是我原来的错误工作对象吗?所以,当我看到这个问题的解决方案时,它应该有点像这样:

我能得到任何解释,为什么它会这样工作?

0 投票
0 回答
938 浏览

javascript - 如何使用 Proxy 拦截 JavaScript 或 E6 中对象的每个函数?

我有一个 A 类,定义如下。(所有示例代码都为隐私而简化)

我想让 A 中的每个函数在另一个函数 Func4() 之后运行;所以我写了一个函数来通过代理拦截,如下所示:

在另一个 main.js 中,我编写如下代码:

但是在chrome控制台中,输出了两行“you intercept this func”怎么会发生这种情况?我只清楚地应用了 a.Func1(),为什么要打印两行?

当我尝试在 main.js 中删除“b = _Intercept(b)”或删除“return Reflect.apply(...arguments);”时 在函数 _Intercept 中,它只会打印一行。有人知道这种情况吗?是我用错了吗?还是 ES6 Proxy 的 bug?或者有人给我一些更好的 javascript 动态代理而不是 ES6 中的代理?

我之前尝试过另一个版本,使用 objectPrototypes 而不是proto,但效果不佳。