21. Number, Math and String Object

1. Number wrapper object

Number 객체 : primitive type number를 다룰 때 유용한 프로퍼티와 메소드를 제공하는 wrapper 객체. 변수 또는 객체의 프로퍼티의 값이 숫자라면 Number 객체를 별도로 생성하지 않고 Number 객체의 프로퍼티와 메소드를 사용할 수 있다.

Primitive type이 wrapper 객체의 메소드를 사용할 수 있는 이유: primitive type으로 wrapper 객체의 프로퍼티나 메소드를 호출할 때 일시적으로 해당 타입과 연관된 wrapper 객체로 변환해 프로토타입 객체를 공유하기 때문.

190515-TIL

Today I Learned

  • 자바스크립트의 Strict Mode, 전역 객체 window, this 바인딩에 대해서 배웠다.
  • Underscore의 each 메소드를 구현했다.
  • 자바스크립트 알고리즘 문제 3개를 풀었다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    // if문 사용
    function evenOrOdd(num) {
    if (num % 2) {
    return 'Odd';
    }
    return 'Even';
    }

    // 3항 연산자 사용
    function evenOrOdd2(num) {
    return num % 2 ? 'Odd' : 'Even';
    }


    console.log(evenOrOdd(42));
    console.log(evenOrOdd(55));
    console.log(evenOrOdd2(288));
    console.log(evenOrOdd2(25));

    // #2. 1 ~ 10,000의 숫자 중 8이 등장하는 횟수 구하기 (Google)
    // 1부터 10,000까지 8이라는 숫자가 총 몇번 나오는가? 이를 구하는 함수를 완성하라.

    // 단, 8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다. 예를 들어 8808은 3, 8888은 4로 카운팅 해야 한다.

    // (hint) 문자열 중 n번째에 있는 문자 : str.charAt(n) or str[n]

    function getCount8() {
    let concatString = '';
    let count = 0;

    for (let i = 1; i < 10001; i++) {
    concatString += i;
    }

    for (let j = 0; j < concatString.length; j++) {
    if (concatString[j] === '8') {
    count += 1;
    }
    }
    return count;
    }

    console.log(getCount8()); // 4000

    // 3. 문자열 다루기
    // alphaString46 함수는 문자열 s를 매개변수로 입력받는다. s의 길이가 4 ~ 6이고, 숫자로만 구성되어 있는지 확인하는 alphaString46 함수를 완성하라.

    // 예를 들어 s가 'a234'이면 false를 리턴하고 '1234'라면 true를 리턴한다.
    function alphaString46(s) {
    if (s === undefined || s.length < 4 || s.length > 6) return false;
    for (let i = 0; i < s.length; i++) {
    // eslint-disable-next-line no-restricted-globals
    if (isNaN(s[i])) return false;
    }
    return true;
    }

    console.log(alphaString46('1234'));
    console.log(alphaString46('9014'));
    console.log(alphaString46('723'));
    console.log(alphaString46('a234'));
    console.log(alphaString46(''));
    console.log(alphaString46());

Underscore: each

each pass

1
2
3
4
5
6
7
8
9
10
11
12
_.each = function(collection, iterator) {
if (Array.isArray(collection)) {
for (let index = 0; index < collection.length; index++) {
iterator(collection[index], Number(index), collection);
}
} else {
for (let key in collection) {
if (key !== 'someProperty')
iterator(collection[key], key, collection);
}
}
};

20. this

1. this Keyword

this는 객체가 자신의 프로퍼티나 메소드를 참조하기 위한 자기 참조 변수(Self-referencing variable)이다. 함수 호출시 arguments 객체와 this가 암묵적으로 함수 내부에 전달된다. arguments 객체와 this는 함수 내부에서 지역 변수처럼 사용할 수 있다. this가 가리키는 값은 함수 호출 방식에 의해 동적으로 결정된다.

C++, Java와 같은 클래스 기반 언어에서 this는 항상 클래스로부터 생성되는 인스턴스를 가리킨다. 그러나 자바스크립트의 this는 함수가 호출되는 방식에 따라서 this에 바인딩될 객체가 동적으로 결정된다.

19. Global Object

전역 객체는 어떤 객체보다도 먼저 생성하고 어느 객체에도 속하지 않는 최상위 객체.

  • client side 환경(브라우저)에서는 window

  • server side 환경에서는 global 객체

18. JavaScript Prototype

JavaScript는

  • 명령형 (Imperative)
  • 함수형 (Functional)
  • 프로토타입 기반 (Prototype-based) 객체지향 프로그래밍

을 지원하는 멀티 패러다임 프로그래밍 언어.

프로토타입은 자바스크립트가 객체지향 프로그래밍의 상속을 구현하는 방식이다.

자바스크립트는 객체 기반 프로그래밍 언어로, 자바스크립트를 이루고 있는 거의 모든 것이 객체이다.

17. Function and First-class Object

1. First-class Object

자바스크립트에서 함수는 객체이며 값처럼 사용할 수 있다. 값처럼 사용할 수 있는 객체를 일급 객체라고 한다. 자바스크립트의 함수는 일급 객체(first-class object)이다.

16. Creating an Object with a Constructor Function

객체 리터럴 표기법은 가장 일반적이고 간단한 객체 생성 방법이다. 객체는 객체 리터럴 표기법 외에도 다양한 방법으로 생성할 수 있다.

객체를 생성하기 위한 용도로 사용되는 함수를 생성자 함수라고 한다.

CodeWars 6kyu. Build a pile of Cubes

CodeWars 6kyu. Build a pile of Cubes

Find the largest number of cubes can be piled.

190509-TIL

Today I Learned

  • Implemented underscore libray’s last function

    Condition complete

    1
    2
    3
    4
    5
    // Like first, but for the last elements. If n is undefined, return just the
    // last element.
    _.last = function(array, n) {
    return n === undefined ? array[array.length-1] : n > array.length ? array : array.slice(array.length-n, array.length);
    };
  • Studied about JavaScript global variable and let, const keyword variables.

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×