理解绑定和继承的相关性

时间:2017-05-06 14:19:52

标签: javascript

今天我正在Function.prototype.bind()阅读MDN文档。在Bound functions used as constructors部分下有一个我无法理解的例子。

我在Node.js(v.4.4.5)和Google Chrome(v58.0.3029.81)中运行了以下代码

function Point(x, y) {
  this.x = x;
  this.y = y;
}

Point.prototype.toString = function() { 
  return this.x + ',' + this.y; 
};

var p = new Point(1, 2);
p.toString(); // '1,2'

var emptyObj = {};
var YAxisPoint = Point.bind(emptyObj, 1/*x*/);

var axisPoint = new YAxisPoint(5);
console.log(axisPoint.toString()); // '1,5'

console.log(axisPoint instanceof Point); // true
console.log(axisPoint instanceof YAxisPoint); // true
console.log(new Point(17, 42) instanceof YAxisPoint); // true

我可以清楚地看到为什么axisPointPointYAxisPoint的实例。但是,世界如何new Point(17,42)成为YAxisPoint的实例?

0 个答案:

没有答案