元编程

从ECMAScript2015开始,JavaScript获得了ProxyReflect对象的支持,允许拦截并定义基本语言操作的自定义行为(例如属性查找、赋值、枚举和函数调用等)。借助这两个对象,可以在JavaScript元级别进行编程。

Proxy

在ES6中引入的Proxy对象可以拦截某些操作并实现自定义行为。例如获取一个对象上的属性:

1
2
3
4
5
6
7
8
9
let handler = {
get: function(target, name) {
return name in target ? target[name] : 42;
}
}

let p = new Proxy({}, handler);
p.a = 1;
console.log(p.a, p.b); // 1, 42

Proxy对象定义了一个目标(这里是一个对象)和一个实现了get方法的handle对象,代理的对象在获取未定义的属性时不会返回undefined而返回42。

未完待续…

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • © 2019-2021 musi

请我喝杯咖啡吧~

支付宝
微信