如何调用预定义函数并访问该函数中变量的属性?

时间:2016-12-28 15:37:47

标签: javascript canvas

下午好! 我有一个关于我在画布上绘制矩形所创建的函数的问题。

功能如下:

function desenharRetangulo(x, y, w, h) {

  var ParametrosRetangulo = {
   texto: "",
   transparencia: 1,
   corRetangulo: "",
   bordaRetanguloCor: "",
   corFonte: "",
   tamanhoFonte: 12,
   retanguloLineWidth: 6,
 }

 ctx.strokeStyle = ParametrosRetangulo.bordaRetanguloCor;
 ctx.lineWidth = ParametrosRetangulo.retanguloLineWidth;
 ctx.globalAlpha = ParametrosRetangulo.transparencia;
 ctx.fillStyle = ParametrosRetangulo.corRetangulo;
 ctx.fillRect(x, y, w, h);
 ctx.strokeRect(
   x -= ParametrosRetangulo.retanguloLineWidth / 2,
   y -= ParametrosRetangulo.retanguloLineWidth / 2,
   w += ParametrosRetangulo.retanguloLineWidth,
   h += ParametrosRetangulo.retanguloLineWidth
 );
 ctx.globalAlpha = 1.0;
 ctx.textBaseline = "middle";
 ctx.fillStyle = ParametrosRetangulo.corFonte;
 ctx.font = ParametrosRetangulo.tamanhoFonte + "px" + " " + "Courier New";
 textX = x + w / 2 - ctx.measureText(ParametrosRetangulo.texto).width / 2;
 textY = y + h / 2;
 ctx.fillText(ParametrosRetangulo.texto, textX, textY);
}

我想知道如何访问变量" ParametrosRetangulo"当我调用" desenharRetangulo"并改变其属性的值。其他方法的功能

感谢您的聆听

1 个答案:

答案 0 :(得分:1)

我相信您希望将ParametrosRetangulo作为您的函数的可选参数。 因此,如果您想在函数外部更改其值,您只需要覆盖默认参数

function desenharRetangulo(x, y, w, h, ParametrosRetangulo = {
   texto: "",
   transparencia: 1,
   corRetangulo: "",
   bordaRetanguloCor: "",
   corFonte: "",
   tamanhoFonte: 12,
   retanguloLineWidth: 6,
 }) {

 ctx.strokeStyle = ParametrosRetangulo.bordaRetanguloCor;
 ctx.lineWidth = ParametrosRetangulo.retanguloLineWidth;
 ctx.globalAlpha = ParametrosRetangulo.transparencia;
 ctx.fillStyle = ParametrosRetangulo.corRetangulo;
 ctx.fillRect(x, y, w, h);
 ctx.strokeRect(
   x -= ParametrosRetangulo.retanguloLineWidth / 2,
   y -= ParametrosRetangulo.retanguloLineWidth / 2,
   w += ParametrosRetangulo.retanguloLineWidth,
   h += ParametrosRetangulo.retanguloLineWidth
 );
 ctx.globalAlpha = 1.0;
 ctx.textBaseline = "middle";
 ctx.fillStyle = ParametrosRetangulo.corFonte;
 ctx.font = ParametrosRetangulo.tamanhoFonte + "px" + " " + "Courier New";
 textX = x + w / 2 - ctx.measureText(ParametrosRetangulo.texto).width / 2;
 textY = y + h / 2;
 ctx.fillText(ParametrosRetangulo.texto, textX, textY);
}