问题标签 [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.
javascript - 使用代理检索 DOM 元素
最近我重构了我早期编写 ES5 的项目之一。有些部分我必须使用 document.getElementById(id) 通过它们的 id 检索 DOM 元素
然后我使用 ES6 代理重构了代码。例如,我有一个 html 文件,其中包含
然后我使用代理来检索这样的 DOM
它有效,但我想知道这是否是检索 DOM 元素的好习惯。
我也刚刚发现,在我注释掉代码的检索部分后,即上面使用代理的代码段。我仍然可以直接使用它们的 ID 访问我的 Js 文件中的 DOM 元素,而无需定义它们!我以前对此一无所知。
抱歉,我知道这看起来像是两个不同的问题,但我真的希望你们能分享一些关于这些的知识。
javascript - lodash cloneDeep 从对象中删除代理
当我深度克隆代理对象时,它会返回一个没有代理的普通对象。但是当我深度克隆对象时我想要代理对象。
前任:
有没有办法像this.x这样的原始对象行为克隆深层对象
javascript - 无法将 ES6 代理与 window.document 对象一起使用
我已经编写了一些代码,这些代码应该在发生这种情况时监视对控制台的修改document.cookie
并打印到控制台。
但是,似乎文档对象实际上并没有改变。(它仍然是未经代理的版本)。因此,代理永远不会捕获对document.cookie
.
相反,如果我想在 上设置代理document.cookie
,那似乎也是不可能的,因为无法捕获赋值操作,而只能捕获/设置属性。
平台:Chrome 67.0.3396.79
javascript - 使用“inspect”(字符串!)调用代理获取陷阱
我目前经常使用代理,但有一个陷阱,我不知道如何解决而不感到 hackish。
看这个简单的代码:
这输出:
在我的真实代码中,我可以毫无问题地整理符号,Symbol(util.inspect.custom)
因为我可以将它们中继到Reflect.get
. 但是,getTrap 也使用 调用'inspect'
。两次!target.inspect
那是一个字符串——这个“特殊”调用和对属性的正常访问没有区别。
我该如何解决这种歧义?为什么无论如何都要用非符号名称调用陷阱?
javascript - javascript按对象创建动态类
任务:我想在 ES6 中通过给定的 JSON 对象创建一个动态类。
在阅读了 MDN 网络文档和很多 stackoverflow 问题之后,我完全不知道如何完成这项工作。
JSON 对象
当我试图解决这个问题时,我想出了如何使用“ Proxy ”或“ defineProperty ”来创建动态getter方法,但是我应该如何处理构造函数?:(
我希望有人可以通过提示或示例来帮助我。提前致谢
javascript - 如何在构造函数中包装使用代理构造的对象?
我知道这Proxy
可用于更改对象级行为,例如括号表示法获取和设置。我能找到的所有示例都显示了构造一个对象,然后用Proxy
调用包装它。有没有办法使用 ES6 类构造函数符号来定义一个类Foo
,这样构造函数返回的对象已经被包装在Proxy
,而不是构造函数的调用者也必须Proxy
单独调用?
提前致谢。
javascript - 反射似乎正在失去这个
我正在尝试为我的类构建一个 AOP 记录器......我遇到了一个问题,当我反射回目标函数时,该函数无法访问this
所以我的 AOP 有点像这样
AOP.js
单身人士
其他类.js
和一个需要单例的类
计算器DI.js
像这样把它们放在一起:
运行此程序时,我收到错误:
TypeError:this.otherClass.shoutOut 不是函数
angular - Typescript 编译器不知道类上的 ES6 代理陷阱
我有一个抽象类:
我有一些扩展的类Foo
:
我有另一个类,我想将所有方法代理Foo
到一个Foo
. 如果我Foo
在此类上定义所有方法,这实际上工作正常。但我宁愿不这样做。我更希望Foo
定义的方法Foo
和编译器知道它FooProxy
也实现了这些方法,而不必实际实现它们。这可能吗?Proxy 类看起来像这样:
例子:
输出:
这个程序实际上在操场上运行,但tsc
不发出任何东西。我只需要欺骗编译器一些方法......
javascript - 使用 javascript 代理拦截方法调用时非法调用
有人可以解释以下输出
第一条语句引发非法调用错误,而第二条则没有。他们两个看起来都和我一模一样,我不明白第一个语句为什么没有所需的this
上下文Reflect.apply
javascript - 在使用 javascript 代理进行不可配置方法调用期间的非法调用
我正在使用 javascript 代理来拦截对对象的方法调用,但是如果该方法是不可配置且不可写的属性,我将无法正确拦截它