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

javascript - 从 ES6 类构造函数返回 ES6 代理

我希望用户只为一个对象设置特定的属性,但同时该对象应该从自定义类构造。

例如

row可以有方法。但是当用户尝试设置时row.password,他们是不允许的。

一种方法是使用new Proxy而不是,但是我们将失去我们在课堂new Row上所做的所有很酷的事情。Row我想new Row返回一个带有this引用的代理对象作为代理的目标。

有人对此有任何想法吗?如果你知道mongoosemongoose它是怎么做的?

0 投票
1 回答
462 浏览

javascript - 使用 JS 代理拒绝数组输入

我想创建一个只接受要存储的特定实例类型的数组。似乎最好的解决方案是使用受此要点SO 线程启发的Proxies

所以我有一个代理工作,对于基本的数组功能,它按预期工作。该set属性确保只有作为Fruit实例的对象才能插入到数组中,否则会引发 TypeError。现在唯一可以设置的其他属性是length.

问题在于高级 i/o,例如splice(). 记录该set函数显示,数组项被移动以便为要在 [0] 插入的新项腾出空间,但是当新项被拒绝时,它会使数组变得一团糟。

正如set反复调用的那样,我没有看到一种明确的方法来阻止拼接启动,或者在代理中将数组恢复到它以前的荣耀(最好是以前的选项)。还有其他人知道如何实施这些想法,或者有其他建议吗?

0 投票
5 回答
19248 浏览

javascript - 如何为嵌套对象使用 javascript 代理

我在 js bin 中有这段代码:

如果我这样做proxy.inner.salary = 555;是行不通的。

但是,如果我这样做proxy.firstName = "Anne",那么效果很好。

我不明白为什么它不能递归工作。

http://jsbin.com/dinerotiwe/edit?html,js,console

0 投票
1 回答
160 浏览

javascript - 代理递归函数

想象一个简单的递归函数,我们试图包装它以检测输入和输出。

但是,这仅记录最顶层的输入和输出。我想找到一种count在递归时调用检测版本的方法。

0 投票
1 回答
498 浏览

ecmascript-6 - 在 ES6 中通过 Proxy 捕获类定义

是否可以诱捕extends?或者在一个类中捕获定义?例如:


有什么方法可以捕获以下事件:

  • B扩展A
  • method1( )被定义在B.prototype
  • method2( )定义于B


现有的机制似乎都不起作用。尝试setPrototypeOfdefineProperty陷阱。

0 投票
0 回答
294 浏览

javascript - 子类 ES6 代理类

我想继承一个ProxiedES6 类。它在 Firefox 和 Chrome 中运行良好,但 Safari 10 会引发错误:

因此,Safari 似乎在尝试扩展Proxy,而 Firefox 和 Chrome 则在扩展SuperClass

这里的正确行为是什么?代理一个类是不可能的(或定义明确的)?或者我可以以某种方式暗示 Safari 做“正确的事情”,即子类SuperClass而不是Proxy

0 投票
2 回答
1889 浏览

node.js - 使用 ES6 Proxy 和 node.js 的非法调用错误

我无法弄清楚为什么以下代码不起作用:

然而

或者

按预期工作。

0 投票
1 回答
413 浏览

javascript - ES6“通用”代理

我想了解为什么无法使用 ES6 创建“通用”转发代理。“通用”是指代理目标可以是具有相同代理声明(构造函数 + 处理程序)的任何类型的非原始值(包括函数)。

情况1:

案例2:

当我使用 function(){} 作为代理目标(而不是 {})时,案例 1 可以正常工作,但是案例 2 不再有效。

谢谢你的帮助。

0 投票
1 回答
146 浏览

javascript - 尝试代理 ES6 类构造函数时出现 TypeError

我正在尝试代理 ES6 构造函数(主要是尝试模拟 Python 的描述符以获得乐趣和学习):

如果您运行此代码段,您将收到此错误:

如果我替换cstr.applynew cstr,构造函数会很快耗尽堆栈(显然进入无限递归)。

如果我用函数替换类(例如,这通过 Babel 转译) ,这将起作用。我可以让它与原生 ES6 一起工作吗?_Record

谢谢你。

PS 我目前正在节点 7.7.4 上检查这些片段,如果它重要的话。

0 投票
1 回答
1763 浏览

javascript - 如何代理自定义元素(Web 组件)

我如何代理自定义元素?

当我尝试时:

Uncaught InvalidStateError: custom element constructors must call super() first and must not return a different object.