ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바스크립트 기본 - 표준 내장 객체의 확장
    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());







    댓글

Designed by Tistory.