基础9:元编程

什么是元编程?

维基百科:

元编程 (meta programming)是一种编程技术,编写出来的计算机程序能够将其他程序作为数据来处理。

意味着可以编写出这样的程序:它能够读取、生成、分析或者转换其它程序,甚至在运行时修改程序自身(反射)。

举个例子,如果想要查看对象a和对象b之间的关系,是否是通过[[prototype]]链接的。我们可以通过a.isPrototype(b),

这就是一种元编程形式,称为自省

用for…in 循环枚举对象的键,或者检查一个对象是否是某个“类构造器”的实例,也都是

常见的元编程例子。

元编程中 的概念,可以理解为 程序 本身,元编程关注以下的一点或几点:

  1. 运行时修改语言结构,这种现象被称为 反射
  • 自省:代码检视自己;
  • **自我修改:**代码修改自己;
  • **调解:**代码修改 默认的语言行为 而使其他代码受到影响。
  1. 生成代码。

1、自省

代码能够自我检查、访问内部属性,获得代码的底层信息!

// 访问对象自身属性
var users = {
   
'Tom': 32,
'Bill': 50
};
Object.keys(users).forEach(name => {
   
	const age = users[name];
	console.log(`User ${
     name} is ${
     age} years old!`);
});

2、自我修改

代码可以修改自身属性或者其他底层信息!

let a = 1;
if (a == 1 && a == 2 && a == 3) {
   
  console.log("元编程");
}

上述代码,正常情况下是没办法满足条件打印输出的。

但是,利用元编程,有办法可以办到。

// 修改自身
let a = {
   
 [Symbol.toPrimitive]: ((i) => () => ++i)(0);
}
if (a == 1 && a == 2 && a == 3) {
   
console.log("元编程")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值