javascript - 在 Canvas 中创建形状时减少 ctx 的使用

标签 javascript

使用ES6或ES5,有没有办法避免在管理图像属性和方法时一遍又一遍地连续输入ctx?意思是如果我有以下代码:

function draw() {
  var canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    var ctx = canvas.getContext('2d');

    // Filled triangle
    ctx.beginPath();
    ctx.moveTo(25, 25);
    ctx.lineTo(105, 25);
    ctx.lineTo(25, 105);
    ctx.fill();

    // Stroked triangle
    ctx.beginPath();
    ctx.moveTo(125, 125);
    ctx.lineTo(125, 45);
    ctx.lineTo(45, 125);
    ctx.closePath();
    ctx.stroke();
  }
}

我们可以做一些类似的事情吗

ctx = { //parent name here only once

    //then all properties or methods associated to it here...
}

最佳答案

这是使用 with 的示例

但是要小心过度使用它,Javascript 上下文可能会变得困惑,过度使用 with 会使情况变得更糟。

但是对于像这样简单的事情,我看不出有什么问题。

function draw() {
  var canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    var ctx = canvas.getContext('2d');
    with (ctx) {
      // Filled triangle
      beginPath();
      moveTo(25, 25);
      lineTo(105, 25);
      lineTo(25, 105);
      fill();

      // Stroked triangle
      beginPath();
      moveTo(125, 125);
      lineTo(125, 45);
      lineTo(45, 125);
      closePath();
      stroke();
    }
  }
}

draw();
<canvas id="canvas"></canvas>

关于javascript - 在 Canvas 中创建形状时减少 ctx 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49288538/

相关文章:

使用 _.extend() 的 JavaScript 继承

javascript - 使用 BreezeJsexecuteQuery 处理 WebApi 抛出的异常(未处理的拒绝原因)

javascript - 有没有办法在第三方 URL 上运行 gremlin.js 猴子测试?

javascript - 在 Visual Studio 2010 中处理常见的 JavaScript 文件

Javascript 高级 console.log

javascript - 构建 backbone.js 应用程序

javascript - 创建对象时了解 JavaScript 中 'this' 的位置

javascript - JS 脚本语法错误

javascript - 自动将 float div 的宽度固定为图像大小

javascript - 如何在 jquery 中检测一次单击的双击