【问题标题】:How can I get all new objects name created from a function constructor?如何获取从函数构造函数创建的所有新对象名称?
【发布时间】:2019-10-07 13:13:36
【问题描述】:

我正在开发一个 javaScript 项目,构建一个基于回合的游戏,并且我为玩家创建了一个函数构造函数。

我为每个玩家添加了一个 css 类,与玩家的名字相同。

下面我添加了我的js代码:

function Player(name, image) {
    this.name = name;
    this.image = image;
}

var player1 = new Player("kakashi", "ninja.png");
var player2 = new Player("mightyGuy", "samurai.png");

function checkClass() {
        $.each(classList, function(index, cssClass) {
            if (
                cssClass === "wall" ||
                cssClass === "kakashi" ||
                cssClass === "mightyGuy"
            ) {
                blocked = true;
            }
        });
    }

我如何获取从这个构造函数创建的所有新 player.name 以检查特定 divCell 是否有任何 player.name 类?

所以不要写 cssClass === "kakashi" || cssClass === "mightyGuy"

我会简单地写一次,它会自动按 Player.name 检查所有 css 类。

更新问题: 这是我最终在我的代码中使用的方式:

function Player(name, image) {
    this.name = name;
    this.image = image;
}

var player1 = new Player("kakashi", "ninja.png");
var player2 = new Player("mightyGuy", "samurai.png");

function checkClass() {
    $.each(classList, function(index, cssClass) {
        if (
            cssClass === "wall" ||
            cssClass == passivePlayer.name
        ) {
            blocked = true;
        }
    });
}

我之所以使用这种方式,是因为我不需要通过使用 var passivePlayer(可以是除了 activePlayer 之外的任何玩家)来写任何玩家名称

【问题讨论】:

    标签: javascript constructor


    【解决方案1】:

    您可以将类添加到对象并检查它们是否存在。

    function Player(name, image) {
        this.name = name;
        this.image = image;
    }
    
    var player1 = new Player("kakashi", "ninja.png");
    var player2 = new Player("mightyGuy", "samurai.png");
    function checkClass() {
        const checkList = {
            wall: true,
            kakashi: true,
            mightyGuy: true
        }
    
        $.each(classList, function (index, cssClass) {
            if (checkList[cssClass]) {
                blocked = true;
            }
        });
    }
    

    【讨论】:

    • 非常感谢您的回答和帮助!!我试过了,效果很好。但是我最终使用了另一种方式,因为我可以避免写球员的名字:名称 ) { 阻塞 = true; } }); }
    • 我很抱歉以这种方式在评论中编写代码,但它不允许我正确格式化代码以回答评论。
    • 您能否更新您的原始问题以纳入您所做的更改?
    • 是的,当然!我刚刚更新了!我仍然愿意接受更多建议和反馈 :) 非常感谢您的回答!
    猜你喜欢
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多