battleCry(4)
означает, что Array(noOfBrains + 1)
действительно будет иметь длину 5:
[empty, empty empty, empty, empty]
Но когда вы .join
эти 5 элементов, вы только вставляете что-то в пробелы между их, и есть только 4 пробела:
[empty, empty empty, empty, empty]
// ^ ^ ^ ^
Таким образом, вы получите 4 вхождения this.mastermind
в результирующей строке.
Этот код довольно запутанный. Я бы предпочел вместо этого что-то вроде .repeat
:
var meglomaniac = {
mastermind : " Brain",
henchman: "Pinky",
battleCry: function(noOfBrains) {
return `They are ${this.henchman} and the${this.mastermind.repeat(noOfBrains)}`
}
};
var battleCry = meglomaniac.battleCry(4);
console.log(battleCry === 'They are Pinky and the Brain Brain Brain Brain');
Array
- это просто конструктор массива. На самом деле это не что-то особенное, просто создается массив, который имеет length
параметра (при передаче числа).