【问题标题】:Meaning of this.__canvases.push(canvas);this.__canvases.push(canvas); 的含义
【发布时间】:2014-11-06 16:38:21
【问题描述】:
在 http://fabricjs.com/customization/ 检查织物 js 示例时
我可以看到 this.__canvases.push(canvas); 被调用,但我无法弄清楚它为什么被调用以及如果不调用它会怎样。
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);
【问题讨论】:
标签:
javascript
html
canvas
fabricjs
【解决方案1】:
如果您查看示例页面的 HTML,您会在第 95-98 行找到以下代码
<script>
this.__canvases = [ ];
fabric.Object.prototype.originX = fabric.Object.prototype.originY = 'center';
</script>
这会生成一个空数组,当您使用 this.__canvases.push(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();
}
}
});
})();
此代码仅计算在示例页面上显示画布元素的位置。
所以为了回答您的问题,它仅用于示例页面以帮助显示示例页面。您的代码中不需要它。在我看来,它不应该包含在每个示例的代码显示中。