JavaScript 反射元编程

概念

什么是反射?

计算机学中,反射式编程(英语:reflective programming)或反射(英语:reflection),是指计算机程序运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。[1]用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。

– 来自维基百科

反射就是指程序运行阶段(RunTime)拦截程序,以达到获取、修改自身元数据的目的。这在其他高级语言中是非常常见的概念。

JavaScript 这种动态语言中,反射可以说是无处不在。

我们随时可以去新增、修改对象的属性,甚至可以重新定义对象中的方法,如我们日常使用的 apply 、 defineProperty 操作就属于典型的反射。

Typescript 装饰器

工欲善其事必先利其器

装饰者模式(Decorator Pattern)也称为装饰器模式,即在不改变对象自身的基础上,动态增加额外的职责,属于结构型模式的一种。

使用装饰者模式的优点是把对象核心职责和要装饰的功能分开 ,装饰者模式属于非侵入式的行为修改。

装饰器是一项实验性特性,在未来的版本中可能会发生改变。(来自官网)

虽然目前仅仅是实验性特性,但是装饰器肯定会有,最多变的也是用法,毕竟装饰器在 Java、Python 这种语言中的场景已经足够成熟了。

Less 的一些高级用法

最近发现很多同学在使用 Less 的时候, 仅是为了使用 Less 的 变量、嵌套 以及 module 功能。

虽然 Less 相对于 Sass 来说,移除了很多功能,比如 @if @else @while @for @function等,但是并非是Less 不行,Less 的宗旨是 “Do Less Get More”。

我们可以在简洁的API 支撑下,做到更多的事情。

曾经我是个 Scss 党,现在已经全面转 Less 了。

如何关闭 Alfred 的同步功能

个人感觉 Alfred 提供的同步功能十分鸡肋,在尝试了一番后,两个设备的 workFlow 都出现了不同的问题。

因为两台电脑的环境可能不同,自定义的 workflow 中,package 可能也会找不到。