New*_*his 3 javascript arrays jasmine
it("should know properties that are functions act like methods", function() {
var meglomaniac = {
mastermind : "Brain",
henchman: "Pinky",
battleCry: function(noOfBrains) {
return "They are " + this.henchman + " and the" +
Array(noOfBrains + 1).join(" " + this.mastermind);
}
};
var battleCry = meglomaniac.battleCry(4);
expect('They are Pinky and the Brain Brain Brain Brain').toMatch(battleCry);
});
Run Code Online (Sandbox Code Playgroud)
这段代码(第 7 行)中 Array 的定义是什么?我查了一下,它看起来像是一个 Array.of() 命令,它生成一个长度为 n 的空数组,在这种情况下为 5?那么为什么假设这是正确的假设,它最终只有 4 个大脑输入?或者这个 array() 是做什么的?
battleCry(4)意味着它Array(noOfBrains + 1)的长度确实是 5:
[empty, empty empty, empty, empty]
Run Code Online (Sandbox Code Playgroud)
但是当你.join这 5 个元素时,你只在它们之间的空格中插入了一些东西,而且只有 4 个空格:
[empty, empty empty, empty, empty]
// ^ ^ ^ ^
Run Code Online (Sandbox Code Playgroud)
因此,您最终会this.mastermind在结果字符串中出现 4 次。
这段代码相当混乱。我强烈喜欢类似的东西.repeat:
[empty, empty empty, empty, empty]
Run Code Online (Sandbox Code Playgroud)
Array只是数组构造函数。它并没有什么特别的,它只是创建了一个length包含参数的数组(当传递一个数字时)。