헷갈렸던 부분은 다음과 같다.
//should know properties that are functions act like methods
it("should know properties that are functions act like methods", function () {
//메소드와 같이 기능하는 프로퍼티를 알아야 한다.
var megalomaniac = {
mastermind: "Brain",
henchman: "Pinky",
battleCry: function (noOfBrains) {
return (
"They are " +
this.henchman +
" and the" +
Array(noOfBrains + 1).join(" " + this.mastermind)
);
},
};
var battleCry = megalomaniac.battleCry(4);
expect("They are Pinky and the Brain Brain Brain Brain").toMatch(battleCry);
//왜 Brain을 4번 반복할까?
});
noOfBrain 인자만큼 전달된 수의 +1 길이의 배열을 만든다.
join() 메서드는 배열의 모든 요소를 연결해 하나의 문자열로 만든다.
빈 문자열 5개를 join으로 합쳐 하나의 배열로 만들었다. 그리고 구분자는(" "+this.mastermind),즉 Brain이다.
따라서, 이러한 형태로 출력된다.
[빈 문자열]Brain[빈 문자열]Brain[빈 문자열]Brain[빈 문자열]Brain[빈 문자열]
따라서, Brain이 4번 출력되는 것이다.