这个JS函数如何使用参数?
How to use parameters for this JS function?
我有以下功能,可以打印出几个像素字母形状的正方形。现在你会注意到我只有字母 a 和 b 在那里。最后我将添加所有字符,但首先我需要知道如何编写此函数,以便我可以将参数传递给它,它会打印出形状,看起来像您作为参数传递给函数的字母。这是现在的功能:
function make_letter() {
var c = document.getElementById("myCanvas");
var context = c.getContext("2d");
var w = parseInt(getComputedStyle(c).width);
var h = parseInt(getComputedStyle(c).height);
var full = Math.floor(h / 16);
var unit = full - 0.75;
var inv = {
a: [[0, 2], [1, 1], [1, 3], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [3, 0], [3, 4], [4, 0], [4, 4]],
b: [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 4], [2, 0], [2, 1], [2, 2], [2, 3], [3, 0], [3,4], [4,0], [4,1], [4,2], [4,3]]
};
for (i = 0; i <= inv.b.length; i++) {
var x = inv.b[i][1] * full;
var y = inv.b[i][0] * full;
context.beginPath();
context.rect(x, y, unit, unit);
context.fillStyle = 'black';
context.fill();
}
}
我想用 make_letter('a');
调用该函数并让它打印一个与您传递的字母匹配的字母,但在函数的某些点我不确定如何合并参数变量正确。就像这一行: for (i = 0; i <= inv.b.length; i++) {
我如何告诉它使用 inv.param.length 假设 'param' 是传递给函数的参数变量的名称?
这里是一个fiddle的原函数:http://jsfiddle.net/po74m2ut/
function make_letter(letter) {
...
for (i = 0; i <= inv[letter].length; i++) {
var x = inv[letter][i][1] * full;
var y = inv[letter][i][0] * full;
context.beginPath();
context.rect(x, y, unit, unit);
context.fillStyle = 'black';
context.fill();
}
}
在我的最后一个回答中,我几乎解释了这个案例 - 我想我应该有!这是您真正想要使用 object[property]
形式的引用而不是 object.property
的时候...当 属性 的实际名称存储在变量中时。
编写该循环的另一种方法是:
inv[letter].forEach(function(coord) {
context.beginPath();
context.rect(coord[1] * full, coord[0] * full, unit, unit);
context.fillStyle = 'black';
context.fill();
});
我有以下功能,可以打印出几个像素字母形状的正方形。现在你会注意到我只有字母 a 和 b 在那里。最后我将添加所有字符,但首先我需要知道如何编写此函数,以便我可以将参数传递给它,它会打印出形状,看起来像您作为参数传递给函数的字母。这是现在的功能:
function make_letter() {
var c = document.getElementById("myCanvas");
var context = c.getContext("2d");
var w = parseInt(getComputedStyle(c).width);
var h = parseInt(getComputedStyle(c).height);
var full = Math.floor(h / 16);
var unit = full - 0.75;
var inv = {
a: [[0, 2], [1, 1], [1, 3], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [3, 0], [3, 4], [4, 0], [4, 4]],
b: [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 4], [2, 0], [2, 1], [2, 2], [2, 3], [3, 0], [3,4], [4,0], [4,1], [4,2], [4,3]]
};
for (i = 0; i <= inv.b.length; i++) {
var x = inv.b[i][1] * full;
var y = inv.b[i][0] * full;
context.beginPath();
context.rect(x, y, unit, unit);
context.fillStyle = 'black';
context.fill();
}
}
我想用 make_letter('a');
调用该函数并让它打印一个与您传递的字母匹配的字母,但在函数的某些点我不确定如何合并参数变量正确。就像这一行: for (i = 0; i <= inv.b.length; i++) {
我如何告诉它使用 inv.param.length 假设 'param' 是传递给函数的参数变量的名称?
这里是一个fiddle的原函数:http://jsfiddle.net/po74m2ut/
function make_letter(letter) {
...
for (i = 0; i <= inv[letter].length; i++) {
var x = inv[letter][i][1] * full;
var y = inv[letter][i][0] * full;
context.beginPath();
context.rect(x, y, unit, unit);
context.fillStyle = 'black';
context.fill();
}
}
在我的最后一个回答中,我几乎解释了这个案例 - 我想我应该有!这是您真正想要使用 object[property]
形式的引用而不是 object.property
的时候...当 属性 的实际名称存储在变量中时。
编写该循环的另一种方法是:
inv[letter].forEach(function(coord) {
context.beginPath();
context.rect(coord[1] * full, coord[0] * full, unit, unit);
context.fillStyle = 'black';
context.fill();
});