Как я могу отобразить (или вызвать) содержимое анонимной функции, которая определена внутри массива в JavaScript - PullRequest
0 голосов
/ 29 апреля 2018

Я хочу вызвать ctx.fillRect(10, 10, 15, 5) в месте, где я его указал, чтобы сделать это (Array[0]) Когда я console.log(Array[0]), он показывает функцию внутри массива, но не вызывает функцию, когда я указываю массив индекс.

function translate1()  {
  var ctx = canvas.getContext("2d");
  var Array = [
    function() {ctx.fillRect(10, 10, 15, 5)}
  ];
console.log(Array[0]); // displays as expected here

Array[0]; // I want the function to be called here
ctx.transform(1, 0, 0, 1, 0, 20);
Array[0]; // and again here
ctx.transform(1, 0, 0, 1, 0, 20);
ctx.fillRect(10, 10, 15, 5);
ctx.transform(1, 0, 0, 1, 0, 20);
ctx.fillRect(10, 10, 15, 5);
ctx.transform(1, 0, 0, 1, 0, 20);
ctx.fillRect(10, 10, 15, 5);
ctx.transform(1, 0, 0, 1, 0, 20);
}

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Функции могут быть сохранены в массивах. Например, мы можем сохранить функцию «привет» в массиве:

var arr = [function(){return "hello";}];

теперь у нас есть функция, хранящаяся в arr [0] и

console.log(arr[0]);

отображает что-то вроде функции ...

Для вызова функции мы используем оператор вызова ()

console.log(arr[0]());

отображает: привет

Имейте в виду, что Array - это имя конструктора ... конструктора для создания массива, поэтому лучше не использовать его в качестве имени массива.

Вот фрагмент кода, который похож на код в вашем вопросе.

function draw()  {
  let canvas = document.getElementById("mycanvas");
  let ctx = canvas.getContext("2d");
  let arr = [
    function() {ctx.fillRect(10, 10, 25, 50)}
  ];
  console.log(arr[0]); // log out the function
  ctx.fillStyle = "red";
  arr[0](); // call or execute the function
  ctx.stroke();
}
draw();
<canvas id="mycanvas" height='100' width='100'></canvas>
0 голосов
/ 29 апреля 2018

Вам нужно вызвать функцию, используя ()

Array[0]()

Так как функция не имеет return, нет особого преимущества в console.log(Array[0]()), которое отображало бы undefined

...