ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JavaScript] 객체(Object)
    JavaScript 2022. 2. 17. 00:07
    728x90
    반응형
    1. 객체 리터럴
    2. Computed properties
    3. Property value shorthand
    4. Constructor Function
    5. in 연산자 : 프로퍼티 유무 체크
    6. for..in vs for..of
    7. 즐거운 복제

     

     

    1. 객체 리터럴

    const obj1 = {}; // 'object literal' syntax
    const obj2 = new Object(); // 'object constructor' syntax
    
    function print(person) {
        console.log(person.name);
        console.log(person.age);
    }
    
    const wonju = { name: 'wonju', age: 24};
    print(wonju);
    
    // with JavaScript magic (dynamically typed language)
    // (1) 속성 추가
    wonju.hasJob = false;
    console.log(wonju.hasJob);
    
    // (2) 속성 삭제
    delete wonju.hasJob;
    console.log(wonju.hasJob); // -> undefined

     

     

    2. Computed properties

    // 함수의 인자로 key값을 받아야 하는 경우 [key] 형태로 사용함
    console.log(wonju.name);
    console.log(wonju['name']);
    wonju['hasJob'] = true;
    console.log(wonju.hasJob);
    
    // 사용 예 
    function printValue(obj, key) {
        console.log(obj[key]);
    }
    printValue(wonju, 'name');
    printValue(wonju, 'age');

     

     

    3. Property value shorthand

    4. 생성자 함수

    // ====== 3. property value shorthand ======
    const person1 = {name: 'bob', age: 2 };
    const person2 = {name: 'steve', age: 3 };
    const person3 = {name: 'dave', age: 4 };
    const person4 = new Person('wonju', 24);
    console.log(person4);
    
    // 더 효율적으로 object 만들기 -> by using 생성자 함수
    
    
    // ====== 4. Constructor Function =======
    function Person(name, age) {
        this.name = name;
        this.age = age;
        // return this;
    }

     

     

    5. in 연산자 -> 프로퍼티 유무 확인

    console.log('name' in wonju);
    console.log('age' in wonju); 
    console.log('random' in wonju); // -> false
    console.log(wonju.random); // -> undefined

     

     

     

    6. for..in vs for..of

    // for (key in obj)
    for (key in wonju) {
        console.log(key);
    }
    
    // for (value of iterable)
    const array = [1, 2, 3, 4];
    
    // (1) 비효율적인 방법
    for(let i = 0; i< array.length; i++) {
        console.log(array[i]);
    }
    
    // (2) 효율적인 방법 using for..of
    for (value of array) {
        console.log(value);
    }

     

     

    7. Fun cloning

    // Object.assign(dest, [obj1, obj2, obj3...])
    const user = { name: 'wonju', age: '24'};
    const user2 = user;
    
    user2.name = 'coder';
    console.log(user); // -> coder
    
    
    // old way
    const user3 = {};
    user.name = 'wonju';
    for (key in user) {
        user3[key] = user[key];
    }
    console.clear();
    console.log(user3);
    
    // 좋은 방법
    const user4 = Object.assign({}, user);
    console.log(user4);
    
    // 다른 예
    const fruit1 = { color: 'red' };
    const fruit2 = { color: 'blue', size: 'big' };
    const mixed = Object.assign({}, fruit1, fruit2);
    console.log(mixed.color);
    console.log(mixed.size);
    LIST

    'JavaScript' 카테고리의 다른 글

    [JavaScript] Callback  (0) 2022.02.19
    [JavaScript] JSON  (0) 2022.02.19
    [JavaScript] 유용한 배열(Array) API 10가지  (0) 2022.02.17
    [JavaScript] 배열(Array)  (0) 2022.02.17
    [JavaScript] Class와 Object  (0) 2022.02.16
Designed by Tistory.