首页 > 解决方案 > 如何获取从函数构造函数创建的所有新对象名称?

问题描述

我正在开发一个 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 之外的任何玩家)

标签: javascriptconstructor

解决方案


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

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;
        }
    });
}

推荐阅读