var b = {
state: 'initial',
initial: {
onClick: function() {
console.log(this);
},
x: 0,
},
}
嗨,我想知道是否可以在上面的代碼中訪問 onClick 函式中的 b 物件?
輸出是{x: 0, onClick: ?}而不是{state: 'initial', ... }
將其更改為箭頭 func 將改為輸出視窗物件。
我正在制作一個密室逃脫游戲,有點像雞和蛋的情況。
var spriteObject =
{
img: null,
INITIAL: {
sourceX: 0,
sourceY: 0,
sourceWidth: 64,
sourceHeight: 64,
x: 0,
y: 0,
width: 64,
height: 64,
isWithinBounds: function(x, y) {
return x > this.x && x < this.x this.width && y > this.y && y < this.y this.height;
},
},
state: 'INITIAL',
};
const inventoryItems = [];
let currentRoom = "kitchen";
const knife = {
...spriteObject,
INITIAL: {
...spriteObject.INITIAL,
x: 200,
y: 162,
sourceX: 1330,
sourceY: 8,
sourceWidth: 803,
sourceHeight: 514,
width: 803,
height: 514,
onClick: () => {
inventoryItems.push(knife);
layers.kitchen.sprites = layers.kitchen.sprites.filter(sprite => sprite !== knife);
},
},
img: kitchenLayout,
};
const layers = {
kitchen: {
sprites: [knife],
},
};
window.addEventListener("click", function(e) {
const x = e.pageX - canvas.offsetLeft;
const y = e.pageY - canvas.offsetTop;
layers[currentRoom].sprites.forEach(sprite => {
const currSprite = sprite[sprite.state];
if (currSprite.onClick && currSprite.isWithinBounds(x, y)) {
currSprite.onClick();
render();
}
})
})
假設我有一間廚房,柜臺上有一把刀。我可以拿起刀并將其放入我的庫存中。這把刀將有 3 種不同的狀態:在柜臺上(初始)、庫存中和鈍(使用后)。我不確定我是否想在庫存中建模作為一種狀態,但我無法弄清楚如何從廚房的精靈串列中洗掉刀。它在上面的代碼中是可行的,但它似乎依賴于我將 Knife 宣告為變數的事實。我不想這樣做,以防我想直接在 sprites 陣列上宣告我的專案。我感謝任何提示,謝謝
uj5u.com熱心網友回復:
您應該能夠為此使用 javascript 類。這樣您就可以將當前類參考為this.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/402235.html
標籤:javascript 目的 这
上一篇:SFINAE歧義
下一篇:為什么“this.userid”正在分配未定義的值?“this”指向類還是物件本身?timestamp_generate_function()雖然有效
