JavaScript 对象语法

javascript objects syntax

本文关键字:语法 对象 JavaScript      更新时间:2023-09-26

im试图学习如何使用JavaScript对象,但在这里遇到了一些问题。

var playerImg = new Image();
    playerImg.src = 'player_stay.png';
var player = {
    posX: 50,
    posY: 50,
    draw: function(){
        ctx.drawImage(playerImg, player.posX, player.posY);
    }
}

是否可以将玩家Img插入玩家对象?类似于 player.img 的东西

编辑:我可以这样做

var player = {
    posX: 50,
    posY: 50,
    draw: function(){
        playerImg = new Image();
        playerImg.src = 'player_stay.png';
        ctx.drawImage(playerImg, player.posX, player.posY);
    }
}

但我认为它会创建新的 Image(); 当我使用 player.draw() 时一直;所以我问是否有更好的方法来做到这一点并将所有参数放在玩家对象中?

是的,为什么不呢:

var player = {
    posX: 50,
    posY: 50,
    draw: function(){
        ctx.drawImage(playerImg, player.posX, player.posY);
    },
    playerImage: playerImg
}
如果我

理解正确,您不想在player对象之外/之前构建playerImg对象。

好吧,这是您可以做到的一种方法,但我不推荐它,因为它不是那么可读:

var player = {
    posX: 50,
    posY: 50,
    draw: function(){
        ctx.drawImage(player.img, player.posX, player.posY);
    },
    img: (function(){
        var playerImg = new Image();
        playerImg.src = 'player_stay.png';
        return playerImg;
    })()
}

此构造(function(){})();称为自执行/自调用匿名函数或立即调用的函数表达式

顺便说一句:此表达式仅在构造播放器对象时执行一次,因此您不必担心重复创建 Image。

是的,这是可能的。

通常,您可以有嵌套的对象或列表,如下所示:

var player = {
    posX: 50,
    posY: 50,
    draw: function(){
        ctx.drawImage(playerImg, player.posX, player.posY);
    },
    playerImage:{
                 src = 'player_stay.png'
                 },
   playerList:['elem1', 'elem2']
}

在你刚刚编写的代码中引用它(值赋值的情况下的示例)

player.playerImage.src='anotherplayer.jpg';

此链接可能会有所帮助http://www.json.org/