-
자바스크립트 기본 - 표준 내장 객체의 확장JavaScript/생활코딩 2018. 12. 7. 16:33
표준 내장 객체의 확장 - https://opentutorials.org/course/743/6475
표준 내장 객체(Standard Built-in Object)는 자바스크립트가 기본적으로 가지고 있는 객체이다.
객체들은 아래와 같다.
Object
Function
Array
String
Boolean
Number
Math
Date
RegExp
내장객체에 어떠한 기능을 추가하는 방법이 있다.
var arr = new Array('seoul','new york','ladarkh','pusan', 'Tsukuba'); //Array에 있는 값들이 랜덤하게 나올 수 있게 해야한다.
function getRandomValueFromArray(haystack){
var index = Math.floor(arr.length*Math.random()); //0~4의 값이 랜덤으로 index값안에 들어간다.
return haystack[index]; // haystack[0], haystack[1], haystack[2], haystack[3], haystack[4] 값 중 랜덤으로 return하게 된다.
}
console.log(getRandomValueFromArray(arr));
Math.floor(haystack.length*Math.random());
배열의 순번값을 랜덤으로 불러올 수 있게 하는 코드이다.
Math.random()은 0~1사이의 정수, 즉 0.1, 0.22, 0.33, 0.5... 같은 수를 불러오며
10 * Math.random() 을 하게되면 최소값은 0 최대값은 10 사이의 정수를 불러오게 된다.
arr.length*Math.random() 을 하게되면 배열들의 수*Math.random() 됨으로써 최소값은 0 최대값은 4가 된다.
하지만 배열들은 소수점이 아닌 0,1,2,3..와 같은 수로 나열되어있기 때문에 Math.floor을 곱해줌으로써 소수점을 모두 제거하게된다.
아래의 위의 예제를 변경한 예제이다.
내장객체에 prototype을 주어서 변경하였다.
Array.prototype.rand = function(){
//rand을 추가하는 것을 통해서 rand이라고하는 메소드를 추가하게 된다.
var index = Math.floor(this.length*Math.random());
//this는 메소드rand가 소속된 객체인 Array를 가리키게 되므로 배열객체인 new Array('seoul','new york','ladarkh','pusan', 'Tsukuba');을 의미한다.
return this[index];
}
var arr = new Array('seoul','new york','ladarkh','pusan', 'Tsukuba'); // 첫번째로 실행되는곳, 배열을 생성했다고하면 배열이 생성될 때 Array라고하는 생성자함수가 실행이된다. new Array라고 되어있지만 Array는 어차피 내장 객체이므로 new를 통해서 다시 객체로 만들어주지 않아도됨. 결론은 new는 있어도되고 없어도됨.
console.log(arr.rand());
'JavaScript > 생활코딩' 카테고리의 다른 글
자바스크립트 기본 - 데이터 타입 (0) 2018.12.12 자바스크립트 기본 - Object (0) 2018.12.12 자바스크립트 기본 - prototype (0) 2018.12.07 자바스크립트 기본 - 상속 (0) 2018.12.07 자바스크립트 기본 - this (0) 2018.12.06 댓글