gpt4 book ai didi

Javascript OOP 和数组

转载 作者:行者123 更新时间:2023-11-28 12:24:34 24 4
gpt4 key购买 nike

我正在做一项新的个人练习,并且正在开始 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com