
“就像他们的船或身体一样,他们的书面语言没有前进或后退的方向。 语言学家将此称为“非线性拼写法”,这引发了一个问题:“他们的想法如何?””-伊恩·唐纳利(Ian Donnelly)
通过阅读引言,我意识到的一件事是,我一直都接受呈现给我的默认现实,并且从不怀疑我在某种程度上完全忽略了我周围正在发生的大量活动。 出生有四个缺点的人四色体的颜色至少比出生三个缺点的人多一百万种颜色。 Tetrachromat大约占女性人口的12%,他们的现实情况如何?
这自然使我思考代码。 在过去的几年中,我已经适应了一些流行的编程范例,从OOP到函数式编程。 从我的角度来看,代码只是生成和处理数据的一组指令。 但是,有没有办法编写更多动态代码? 例如,对于七足动物,徽标可以代表“路易丝”,也可以代表“嗨路易丝,我们在这里提供武器”。 带着这个模糊的问题,我开始了我的研究。 最终,元编程作为使用动态功能编写代码的手段不断出现。
元编程是一种编程技术,其中计算机程序能够将程序视为其数据。 —维基百科
WTF对吗? 由于JavaScript是我的果酱,因此我将在JavaScript上下文中进行讨论。

程序具有固定的含义,但数据的含义取决于其上下文。 例如

在这种情况下,数据不仅是字符串,还可以变成触发警报消息“ Hi”的程序。
最终,这使我们能够像这样编写更灵活,更动态的代码。

但是,如何在不手动将对象嵌套在数百万个其他对象中的情况下实现呢?

我们可以使用Proxy拦截程序的默认行为并生成输出,并且输出取决于它通过设置陷阱(在这种情况下为允许属性访问的方法)接收到的数据。
尽管以这种方式抽象出很多代码真是太棒了,但是在编写Web代码时这通常不是标准做法,因为继承代码的新开发人员很容易迷失方向,调试可能成为噩梦。
这篇文章并不是要对元编程本身进行完整的介绍,而是要促进电影启发式学习。 我坚信智能电影可以增强普通大众的智慧。
哪一部电影启发了您学习和创作?
资源:
关于元编程的激烈争论:https://news.ycombinator.com/item?id = 1047616
了解有关JavaScript中元编程的更多信息:https://www.keithcirkel.co.uk/metaprogramming-in-es6-symbols/