javascript의 Number 객체는 Object 객체의 toString()
메소드를 오버라이딩하며,
Object.prototype.toString()
를 상속받지 않습니다.
Number 객체에서 toString() 메소드는 특정 진수로 객체를 표현한 문자열을 환원합니다.
Math.random() 으로 랜덤한 숫자를 생성하고 거기에 .toString()을 하면 랜덤한 문자열이 나오게 된다는 뜻이다.
그리고 .toString([radix])은 매개변수로 2~36 사이의 정수를 받는데 이는 진수를 나타내는 값이다.
16을 넣으면 16진수로 알파벳 f까지 사용하여 표현된다. 우리는 36을 넣어 36진수를 표현할 것이다.
// 랜덤이기 때문에 결과값이 다를 수 있음.
Math.random().toString(36) // "0.d4jcyu6965"
앞에 숫자와 0. 이 붙어있다. 왜냐하면 Math.random() 이 0 이상 1 미만의 구간에서 근사적으로 균일한(approximately uniform) 부동소숫점 의사난수를 반환하기 때문이다.
이를 제거하기 위한 substr을 쓰면
// 랜덤이기 때문에 결과값이 다를 수 있음.
Math.random().toString(36).substr(2,11); // "twozs5xfni"
난수화 문자열이 생성되었다.
그럼 이만으로 마치겠습니다.