这个的含义.__ canvases.push(canvas);

时间:2014-11-06 08:21:22

标签: javascript html5 canvas fabricjs

http://fabricjs.com/customization/检查fabric js示例时 我可以选择这个.__ canvases.push(画布); 被调用,我只是想不通它为什么被调用,如果不调用它。

var canvas = new fabric.Canvas('c2');
canvas.add(new fabric.Circle({ radius: 30, fill: '#f55', top: 100, left: 100 }));
canvas.selection = false;
this.__canvases.push(canvas);

1 个答案:

答案 0 :(得分:2)

如果查看示例页面的HTML,您将在95-98行找到以下代码

<script>
  this.__canvases = [ ];
  fabric.Object.prototype.originX = fabric.Object.prototype.originY = 'center';
</script>

这将生成一个空数组,当您使用this.__canvases.push(canvas);时,通过将canvas对象附加到数组的末尾来填充(参见Array.prototype.push()

此数组随后由以下代码使用(在第455-468行找到)

(function() {
  fabric.util.addListener(fabric.window, 'load', function() {
    var canvas = this.__canvas || this.canvas,
        canvases = this.__canvases || this.canvases;

    canvas && canvas.calcOffset && canvas.calcOffset();

    if (canvases && canvases.length) {
      for (var i = 0, len = canvases.length; i < len; i++) {
        canvases[i].calcOffset();
      }
    }
  });
})();

此代码仅计算在示例页面上显示画布元素的位置。

因此,为了回答您的问题,它仅用于示例页面以帮助显示示例页面。您的代码中不需要它。在我看来,它不应该被包含在每个例子的代码显示中。