我希望用户只为一个对象设置特定的属性,但同时该对象应该从自定义类构造。
例如
var row = new Row({
name : 'John Doe',
email : 'uhiwarale@gmail.com'
}, Schema);
row
可以有方法。但是当用户试图设置 row.password
时,他们是不允许的。
一种方法是使用 new Proxy
而不是 new Row
但是我们将放弃我们在 Row
类中做的所有很酷的事情。我想要 new Row
返回一个代理对象 this
引用作为代理的目标。
有人对此有任何想法吗?如果你知道 mongoose
, mongoose
是怎么做到的?
原文由 Uday Hiwarale 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果代理肯定会为您发生,限制设置功能的一种可能解决方案是返回一个 ES6 代理实例。
默认情况下,javascript 中的构造函数会自动返回
this
对象,但您可以通过在this
上实例化代理来定义和返回自定义行为作为目标。请记住,proxy 中的 set 方法应该返回一个布尔值。所以,现在不允许根据代理设置不可设置的属性。
也可以在 get 方法上有自定义行为。
但是,请注意并注意覆盖返回到调用上下文的引用。
注意: 示例代码已经在 Node v8.1.3 和现代浏览器上进行了测试。