问题标签 [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 投票
0 回答
409 浏览

javascript - 使用代理检索 DOM 元素

最近我重构了我早期编写 ES5 的项目之一。有些部分我必须使用 document.getElementById(id) 通过它们的 id 检索 DOM 元素

然后我使用 ES6 代理重构了代码。例如,我有一个 html 文件,其中包含

然后我使用代理来检索这样的 DOM

它有效,但我想知道这是否是检索 DOM 元素的好习惯。

我也刚刚发现,在我注释掉代码的检索部分后,即上面使用代理的代码段。我仍然可以直接使用它们的 ID 访问我的 Js 文件中的 DOM 元素,而无需定义它们!我以前对此一无所知。

抱歉,我知道这看起来像是两个不同的问题,但我真的希望你们能分享一些关于这些的知识。

0 投票
1 回答
1317 浏览

javascript - lodash cloneDeep 从对象中删除代理

当我深度克隆代理对象时,它会返回一个没有代理的普通对象。但是当我深度克隆对象时我想要代理对象。

前任:

有没有办法像this.x这样的原始对象行为克隆深层对象

0 投票
0 回答
777 浏览

javascript - 无法将 ES6 代理与 window.document 对象一起使用

我已经编写了一些代码,这些代码应该在发生这种情况时监视对控制台的修改document.cookie并打印到控制台。

但是,似乎文档对象实际上并没有改变。(它仍然是未经代理的版本)。因此,代理永远不会捕获对document.cookie.

相反,如果我想在 上设置代理document.cookie,那似乎也是不可能的,因为无法捕获赋值操作,而只能捕获/设置属性。

平台:Chrome 67.0.3396.79

0 投票
0 回答
75 浏览

javascript - 使用“inspect”(字符串!)调用代理获取陷阱

我目前经常使用代理,但有一个陷阱,我不知道如何解决而不感到 hackish。

看这个简单的代码:

这输出:

在我的真实代码中,我可以毫无问题地整理符号,Symbol(util.inspect.custom)因为我可以将它们中继到Reflect.get. 但是,getTrap 也使用 调用'inspect'。两次!target.inspect那是一个字符串——这个“特殊”调用和对属性的正常访问没有区别。

我该如何解决这种歧义?为什么无论如何都要用非符号名称调用陷阱?

0 投票
1 回答
262 浏览

javascript - javascript按对象创建动态类

任务:我想在 ES6 中通过给定的 JSON 对象创建一个动态类。

在阅读了 MDN 网络文档和很多 stackoverflow 问题之后,我完全不知道如何完成这项工作。

JSON 对象

当我试图解决这个问题时,我想出了如何使用“ Proxy ”或“ defineProperty ”来创建动态getter方法,但是我应该如何处理构造函数?:(

我希望有人可以通过提示或示例来帮助我。提前致谢

0 投票
2 回答
1416 浏览

javascript - 如何在构造函数中包装使用代理构造的对象?

我知道这Proxy可用于更改对象级行为,例如括号表示法获取和设置。我能找到的所有示例都显示了构造一个对象,然后用Proxy调用包装它。有没有办法使用 ES6 类构造函数符号来定义一个类Foo,这样构造函数返回的对象已经被包装在Proxy,而不是构造函数的调用者也必须Proxy单独调用?

提前致谢。

0 投票
1 回答
84 浏览

javascript - 反射似乎正在失去这个

我正在尝试为我的类构建一个 AOP 记录器......我遇到了一个问题,当我反射回目标函数时,该函数无法访问this

所以我的 AOP 有点像这样

AOP.js

单身人士

其他类.js

和一个需要单例的类

计算器DI.js

像这样把它们放在一起:

运行此程序时,我收到错误:

TypeError:this.otherClass.shoutOut 不是函数

0 投票
2 回答
9558 浏览

angular - Typescript 编译器不知道类上的 ES6 代理陷阱

我有一个抽象类:

我有一些扩展的类Foo

我有另一个类,我想将所有方法代理Foo到一个Foo. 如果我Foo在此类上定义所有方法,这实际上工作正常。但我宁愿不这样做。我更希望Foo定义的方法Foo和编译器知道它FooProxy也实现了这些方法,而不必实际实现它们。这可能吗?Proxy 类看起来像这样:

例子:

输出:

这个程序实际上在操场上运行,但tsc不发出任何东西。我只需要欺骗编译器一些方法......

0 投票
1 回答
689 浏览

javascript - 使用 javascript 代理拦截方法调用时非法调用

有人可以解释以下输出

第一条语句引发非法调用错误,而第二条则没有。他们两个看起来都和我一模一样,我不明白第一个语句为什么没有所需的this上下文Reflect.apply

0 投票
0 回答
420 浏览

javascript - 在使用 javascript 代理进行不可配置方法调用期间的非法调用

我正在使用 javascript 代理来拦截对对象的方法调用,但是如果该方法是不可配置且不可写的属性,我将无法正确拦截它