在属性中对象这个关键字
Object this keyword in properties
const canvas = document.getElementById("canvas");
canvas.width = canvas.height = 700;
const h = canvas.height;
const w = canvas.height;
const ctx = canvas.getContext("2d");
const snake = {
width: w / 12,
height: h / 12,
blocks: [[40, 30, this.width, this.height]],
renderSnake() {
this.blocks.forEach((b) => {
ctx.fillStyle = "black";
ctx.fillRect(...b);
console.log(this.blocks);
});
console.log(this.blocks);
},
};
在我的代码中,问题出在 snake 对象的块 属性 中。 this.width 和 this.height 未定义,我添加了一些 console.log 并意识到 blocks 数组 属性 中的 this 关键字指向 Window 对象,如何我让它指向蛇对象,或者在不对宽度和高度进行硬编码的情况下完成这项工作。
您可以将 blocks
设为 getter。
get blocks(){
return [[40, 30, this.width, this.height]];
}
const canvas = document.getElementById("canvas");
canvas.width = canvas.height = 700;
const h = canvas.height;
const w = canvas.height;
const ctx = canvas.getContext("2d");
const snake = {
width: w / 12,
height: h / 12,
blocks: [[40, 30, this.width, this.height]],
renderSnake() {
this.blocks.forEach((b) => {
ctx.fillStyle = "black";
ctx.fillRect(...b);
console.log(this.blocks);
});
console.log(this.blocks);
},
};
在我的代码中,问题出在 snake 对象的块 属性 中。 this.width 和 this.height 未定义,我添加了一些 console.log 并意识到 blocks 数组 属性 中的 this 关键字指向 Window 对象,如何我让它指向蛇对象,或者在不对宽度和高度进行硬编码的情况下完成这项工作。
您可以将 blocks
设为 getter。
get blocks(){
return [[40, 30, this.width, this.height]];
}