var arr = new Array('seoul', 'asuncion', 'vilnius', 'osaka', 'morelia');
function getRandomValueFromArray(haystack) {
var index = Math.floor(haystack.length*Math.random());
return haystack[index];
}
console.log(getRandomValueFromArray(arr));
// 배열의 원형에 random 메서드 추가
Array.prototype.random = function() {
// this: 배열 객체
var index = Math.floor(this.length*Math.random());
return this[index];
}
var arr = new Array('seoul', 'asuncion', 'vilnius', 'osaka', 'morelia');
console.log(arr.random())
함수 네이밍 => 이제 배열 객체의 메서드를 정의할 때와 독립적인 함수로 정의할 때의 함수 이름이 다르다. 독립적인 함수(물론 이 함수도 전역객체의 메서드이다.)일 때는 함수의 기능을 누가 봐도 알 수 있도록(배열에서 랜덤하게 요소를 꺼낸다는 기능) 명확히 해야 한다. 그러나 배열의 메서드가 되면 어차피 배열 객체 안에 소속되어 있으니까 굳이 배열 관련 내용을 함수 이름에 적지 않아도 괜찮아진다