元编程

96
内孤
0.1 2018.05.31 23:00 字数 201

摘自《Javascript函数式编程》
在函数式编程书中这样定义元编程:编写代码来做一些事情叫作编程,而元编程是当你写的代码改变了某些代码被稀释的方式。

在Javascript中,this引用的动态性质可以用来元编程,观察下面的构造函数:

function Point2D(x, y) {
   this._x = x;
   this._y = y;
}

当使用new来生成Point2D函数的对象实例,会得到你所期望的字段值:

new Point2D(0, 1);
// => { _x: 0, _y: 1 }

然而,可以使用方法Function.call来进行元编程,将Point2D派生为新Point3D的构造器:

function Point3D(x, y, z) {
  Point2D.call(this, x, y);
  this._z = z;
}
new Point3D(10, -1, 100);
// => { _x: 10, _y: -1, _z: 100 }

Point3D并没有显示地设置this._x和this._y的值,而是通过调用Point2D的call方法动态绑定this,这样可以改变构造属性的目标。

函数式编程
Web note ad 1