问题标签 [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 - 从 ES6 类构造函数返回 ES6 代理
我希望用户只为一个对象设置特定的属性,但同时该对象应该从自定义类构造。
例如
row
可以有方法。但是当用户尝试设置时row.password
,他们是不允许的。
一种方法是使用new Proxy
而不是,但是我们将失去我们在课堂new Row
上所做的所有很酷的事情。Row
我想new Row
返回一个带有this
引用的代理对象作为代理的目标。
有人对此有任何想法吗?如果你知道mongoose
,mongoose
它是怎么做的?
javascript - 使用 JS 代理拒绝数组输入
我想创建一个只接受要存储的特定实例类型的数组。似乎最好的解决方案是使用受此要点和SO 线程启发的Proxies。
所以我有一个代理工作,对于基本的数组功能,它按预期工作。该set
属性确保只有作为Fruit实例的对象才能插入到数组中,否则会引发 TypeError。现在唯一可以设置的其他属性是length
.
问题在于高级 i/o,例如splice()
. 记录该set
函数显示,数组项被移动以便为要在 [0] 插入的新项腾出空间,但是当新项被拒绝时,它会使数组变得一团糟。
正如set
反复调用的那样,我没有看到一种明确的方法来阻止拼接启动,或者在代理中将数组恢复到它以前的荣耀(最好是以前的选项)。还有其他人知道如何实施这些想法,或者有其他建议吗?
javascript - 如何为嵌套对象使用 javascript 代理
我在 js bin 中有这段代码:
如果我这样做proxy.inner.salary = 555;
是行不通的。
但是,如果我这样做proxy.firstName = "Anne"
,那么效果很好。
我不明白为什么它不能递归工作。
javascript - 代理递归函数
想象一个简单的递归函数,我们试图包装它以检测输入和输出。
但是,这仅记录最顶层的输入和输出。我想找到一种count
在递归时调用检测版本的方法。
ecmascript-6 - 在 ES6 中通过 Proxy 捕获类定义
是否可以诱捕extends
?或者在一个类中捕获定义?例如:
有什么方法可以捕获以下事件:
B
扩展A
。method1( )
被定义在B.prototype
method2( )
定义于B
。
现有的机制似乎都不起作用。尝试setPrototypeOf
和defineProperty
陷阱。
javascript - 子类 ES6 代理类
我想继承一个Proxied
ES6 类。它在 Firefox 和 Chrome 中运行良好,但 Safari 10 会引发错误:
因此,Safari 似乎在尝试扩展Proxy
,而 Firefox 和 Chrome 则在扩展SuperClass
。
这里的正确行为是什么?代理一个类是不可能的(或定义明确的)?或者我可以以某种方式暗示 Safari 做“正确的事情”,即子类SuperClass
而不是Proxy
?
node.js - 使用 ES6 Proxy 和 node.js 的非法调用错误
我无法弄清楚为什么以下代码不起作用:
然而
或者
按预期工作。
javascript - ES6“通用”代理
我想了解为什么无法使用 ES6 创建“通用”转发代理。“通用”是指代理目标可以是具有相同代理声明(构造函数 + 处理程序)的任何类型的非原始值(包括函数)。
情况1:
案例2:
当我使用 function(){} 作为代理目标(而不是 {})时,案例 1 可以正常工作,但是案例 2 不再有效。
谢谢你的帮助。
javascript - 尝试代理 ES6 类构造函数时出现 TypeError
我正在尝试代理 ES6 构造函数(主要是尝试模拟 Python 的描述符以获得乐趣和学习):
如果您运行此代码段,您将收到此错误:
如果我替换cstr.apply
为new cstr
,构造函数会很快耗尽堆栈(显然进入无限递归)。
如果我用函数替换类(例如,这将通过 Babel 转译) ,这将起作用。我可以让它与原生 ES6 一起工作吗?_Record
谢谢你。
PS 我目前正在节点 7.7.4 上检查这些片段,如果它重要的话。
javascript - 如何代理自定义元素(Web 组件)
我如何代理自定义元素?
当我尝试时:
Uncaught InvalidStateError: custom element constructors must call super() first and must not return a different object
.