首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在nodejs中启用Harmony Proxies

在nodejs中启用Harmony Proxies
EN

Stack Overflow用户
提问于 2012-05-19 22:11:58
回答 5查看 12.4K关注 0票数 20

可以在nodejs中启用EcmaScript 6和谐代理吗?如果是这样的话,利弊是什么?有关于如何使用它们的文档吗?谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-20 00:19:29

使用node --harmony-proxies调用节点应该可以做到这一点。

优点:当你真的需要代理的时候,它是一个非常强大的特性。

缺点:代理是一个非常强大的功能,当你不需要它们的时候(大多数时候应该是这样的)。此外,实现仍然应该被认为是实验性的。

至于文档,所有的自动柜员机都是Harmony wiki,特别是这个页面,它反映了V8 (以及节点)中代理的当前实现:

http://wiki.ecmascript.org/doku.php?id=harmony:proxies

票数 20
EN

Stack Overflow用户

发布于 2013-09-20 00:15:00

我推荐harmony-reflect,它使得设置get/set陷阱变得很容易:

UPDATE小心,下面是CoffeeScript

代码语言:javascript
运行
复制
require 'harmony-reflect'

handler =

  get: ( target, name ) ->
    console.log 'get' name
    return target[ name ]

  set: ( target, name, value ) ->
    console.log 'set' name
    target[ '%is-clean' ] = no if value isnt target[ name ]
    if value is undefined then delete target[ name ]
    else                       target[ name ] = value
    return value

clean = ( x ) ->
  x[ '%is-clean' ] = yes
  return x

p = Proxy {}, handler
p[ 'a' ] = 1
p[ 'b' ] = undefined
console.log p[ 'a' ], p[ 'b' ]
console.log "c" of p, p[ 'c' ]
console.log p
clean p
p[ 'a' ] = 1
console.log p
p[ 'a' ] = 42
console.log p

上面是在JavaScript中实现“透明对象持久化”的初步代码。使用harmony-reflect,让对象上的所有getset操作都被拦截变得很简单-在这个演示中,我们设置了一个%is-clean属性,这样我们就可以测试对象成员是否被更改了,我们还删除了被设置为未定义的成员。

票数 2
EN

Stack Overflow用户

发布于 2016-12-10 17:08:58

您可以使用pimped-proxy,它是代理的轻量级实现,使声明更容易,并且与ES5兼容。与本机代理不同,它只能代理创建时已知的属性。

https://github.com/Boulangerie/pimped-proxy

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10665892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档