bject
이번주는 이사준비로 인해 매일 무언가를 치우거나 정리하고 청소하는 중이라서 공부에 집중하기 어렵다. 어제도 이사들어갈 집에 청소를 하러갔다가...현재 온 몸이 쑤셔서 골골 거리는 중이다.😢
Javascript Koans의 object부분을 푸는 중인데, 내 답안과 다른 부분이 있어 남겨두려고 벨로그를 작성한다!
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 5Brain").toMatch(battleCry); //나의 답안
expect("They are Pinky and the Brain Brain Brain Brain").toMatch(battleCry); //정답
Array ( param )
Array 는 new 생성자 없이도 사용할 수 있다.
battleCry(4) 일 때 Array(5) 로 빈배열 5개가 생성된다.
x라는 배열을 만들고 join()을 사용해봤다. " " 구분자와 "hi"가 5개씩 담겨나온것을 확인할 수 있었다.
이렇게 Array( n-1 ) 되어져서 반환되는 이유를 모르겠어서 구글링해보았다.
stack overflow 의 답변을 보면
- Array는 new 없이도 사용할 수 있고,
- . join() 함수는 각 배열 요소를 문자열로 변환한 다음 배열 요소에서 각 문자열 사이에 인수가 있는 연결된 문자열을 .join()으로 반환한다.
- Array는 5개의 빈 undefined 요소로 배열을 구성하고 이걸 표현식과 결합한다고 한다. 그리고 5개의 빈 문자열사이에는 4개의 구분자가 있다.
종합해보자면 Array(noOfBrains + 1).join(" " + this.mastermind);
Array(5)는 5개의 빈배열이 구성되어져 있고 " Brain" 이 구분자로 사용되어지기 때문에 " Brain"이 4번 출력되는 것이다.
같은 내용으로 tstory에도 잘 정리해둔 글이 있었는데 ㅋㅋ 한글로 읽으니.. 이해가 더 빨리되는 기분이었달까.. 이해하기 위해 참고했던 두 글을 하단에 첨부해둔다! 미래의 나를 위하여...
- https://stackoverflow.com/questions/30522129/javascript-koans-about-objects-how-does-this-function-work-in-3
- https://curryyou.tistory.com/199
Author And Source
이 문제에 관하여(bject), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@haesoohaesoo/JavaScript-Koans-object저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)