在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);
答案 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();
}
}
});
})();
此代码仅计算在示例页面上显示画布元素的位置。
因此,为了回答您的问题,它仅用于示例页面以帮助显示示例页面。您的代码中不需要它。在我看来,它不应该被包含在每个例子的代码显示中。