Javascript OOP 和数组

标签 javascript arrays object

我正在做一项新的个人练习,并且正在开始 JS OOP。

我的目标是:创建一支小型机器人军队,每个机器人都进行 self 介绍。

我的代码很棒并且可以工作,但我想改进它。 我想将我的机器人添加到一个数组中,并为每个机器人的引入创建一个循环。

这并不困难,但我无法在 OOP Javascript 中创建数组。我不明白如何创建一个具有机器人所有功能的机器人。

这是我的代码:

// Objet Robot
function Robot(nick, pv, maxSpeed, position) {
 this.nick = nick;
 this.pv = pv;
 this.maxSpeed = maxSpeed;
 this.position = position;
};

//Méthode présentation des robots
Robot.prototype.sePresenter = function() {
 console.log("Bonjour je m'appelle " + this.nick + ". J'ai " + this.pv + " points de vie." + " Je me déplace à " + this.maxSpeed + " cases par seconde. Je suis à la case de coordonnées " + this.position);
};

// Variables
var robot1 = new Robot('Maurice',95,2,(5,8));
var robot2 = new Robot('Lilian',76,3,(12,25));
var robot3 = new Robot('Ernest',100,1,(11,14));
var robot4 = new Robot('Juliette',87,3,(2,17));


// Appel Méthode sePresenter
robot1.sePresenter();
robot2.sePresenter();
robot3.sePresenter();
robot4.sePresenter();

最佳答案

我不完全确定您在问什么,但如果您想要一组 Robot 并在每个机器人上调用 sePresenter,您可以使用一个array initializer ([...]) 和 Array#forEach (或者有 several other ways 循环数组):

var robots = [
    new Robot('Maurice',95,2,(5,8)),
    new Robot('Lilian',76,3,(12,25)),
    new Robot('Ernest',100,1,(11,14)),
    new Robot('Juliette',87,3,(2,17))
];
robots.forEach(function(robot) {
    robot.sePresenter();
});
<小时/>

旁注:您对构造函数的调用有点奇怪。这:

new Robot('Juliette',87,3,(2,17));

...与此完全相同:

new Robot('Juliette',87,3,17);
// Note no (2,...) -------^

...因为 217 都是文字。

在 JavaScript 中,comma operator计算其两个操作数,其结果是第二个操作数的值。因此 (2,17) 的计算结果为 17。仅当括号前面的内容是函数引用时,括号才会调用函数。

如果 2,17 是坐标,您可能需要一个数组:

new Robot('Juliette',87,3,[2,17]);
// [] rather than () -----^----^

...您可以在 Robot 中将其引用为 this.position[0]this.position[1]

或者一个对象:

new Robot('Juliette',87,3,{x:2,y:17});
// Object initializer ----^^^^^^^^^^

...您可以在 Robot 中将其引用为 this.position.xthis.position.y

关于Javascript OOP 和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31023283/

相关文章:

javascript - 使用 socket.io 将数组从服务器发送到客户端

javascript - 如何在前端JavaScript中访问Python(Flask)传递的数组(JSON)?

c++ - 一个简单的 vector ,如何正确地重新分配新数组的地址

c++ - 如何打印 map 对象?

angular - 将数据添加到 Firebase Cloud Firestore 和 Angular

javascript - 如何在私有(private)对象上设置特定属性

javascript - RXJS 链可观察值在任意点完成

javascript - 获取用户最近的 SoundCloud 轨道链接

javascript - 检查 Array.toJSON 是否已在 JavaScript 中被覆盖

c# - 简单 union 转换示例 - C 到 C#