Is it possible to enable EcmaScript 6 Harmony Proxies in nodejs? If so, what are the pros and cons? And is there any documentation on how to use them? Thanks !
Invoking node with node --harmony-proxies
should do the trick.
Pros: proxies are a very powerful feature when you really need them.
Cons: proxies are a much too powerful feature when you don't need them (which should be most of the time). Also, the implementation should still be regarded experimental.
As for documentation, all there really is atm is the Harmony wiki, in particular this page, which reflects the current implementation of proxies in V8 (and thus node):
http://wiki.ecmascript.org/doku.php?id=harmony:proxies
i recommend harmony-reflect, which makes it easy to e.g. set up get/set traps:
UPDATE careful, below is CoffeeScript
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
the above is the inceptive code to do 'transparent object persistence' in JavaScript. using harmony-reflect
, it becomes trivial to make it so that all get
and set
actions on an object get intercepted—in this demo, we set an %is-clean
attribute so we can test whether object members have been changed, and we also delete members that have been set to undefined.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With