复习

元编程是当你将程序的逻辑转向关注它自身(或者它的运行时环境)时进行的编程,要么为了调查它自己的结构,要么为了修改它。元编程的主要价值是扩展语言的普通机制来提供额外的能力。

在ES6以前,JavaScript已经有了相当的元编程能力,但是ES6使用了几个新特性及大地提高了它的地位。

从对匿名函数的函数名推断,到告诉你一个构造器是如何被调用的元属性,你可以前所未有地在程序运行期间来调查它的结构。通用Symbols允许你覆盖固有的行为,比如将一个对象转换为一个基本类型值的强制转换。代理可以拦截并自定义各种在对象上的底层操作,而且Reflect提供了模拟它们的工具。

特性测试,即便是对尾部调用优化这样微妙的语法行为,将元编程的焦点从你的程序提升到JS引擎的能力本身。通过更多地了解环境可以做什么,你的程序可以在运行时将它们自己调整到最佳状态。

你应该进行元编程吗?我的建议是:先集中学习这门语言的核心机制是如何工作的。一旦你完全懂得了JS本身可以做什么,就是开始利用这些强大的元编程能力将这门语言向前推进的时候了!