ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Javascript] Object, assign, key, values, entries, preventExtensions, seal, freeze, isFrozen
    ์›น/JavaScript 2023. 1. 12. 21:02
    ๋ฐ˜์‘ํ˜•

    I. Object ํด๋ž˜์Šค

    ๐Ÿ‘‰ MDN ๋ฌธ์„œ ๋ณด๊ธฐ

    ์ด์ œ๊นŒ์ง€ ๋ฐฐ์šด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋“ค์˜ ์›ํ˜•

    console.log(
    new String('ABC') instanceof Object,
    new Number(123) instanceof Object,
    [] instanceof Object,
    (function () {}) instanceof Object,
    globalThis instanceof Object
    );
    • ๊ฐ๊ฐ ๋”ฐ๋กœ ์ถœ๋ ฅํ•ด์„œ [[Prototype]]์„ ํŽผ์ณ ๋ณผ ๊ฒƒ

     

    ์ƒ์„ฑ์ž ํ•จ์ˆ˜

    // ๋นˆ ๊ฐ์ฒด ์ƒ์„ฑ
    console.log(
    new Object(),
    new Object(null),
    new Object(undefined),
    );

     

    // ๊ฐ ๊ฐ’์— ์ ํ•ฉํ•œ ๋ž˜ํ•‘ํ•จ์ˆ˜๋กœ ์ž‘์šฉ
    console.log(
    new Object(1),
    new Object('ABC'),
    new Object(true),
    new Object([1, 2, 3])
    );




     

    II. ์ฃผ์š” ์ •์  ๋ฉ”์„œ๋“œ

    1. assign - ์ธ์ž๋กœ ์ฃผ์–ด์ง„ ๊ฐ์ฒด(๋“ค)์˜ ํ”„๋กœํผํ‹ฐ๋“ค์„ ๋Œ€์ƒ ๊ฐ์ฒด์— ๋ถ™์—ฌ๋„ฃ์Œ

    • โญ๏ธ ๋Œ€์ƒ ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝ
    • ๊ฒฐ๊ณผ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜
    • โš ๏ธ ์–•์€ ๋ณต์‚ฌ

    ์ธ์ž๋“ค:

    • ๋Œ€์ƒ ๊ฐ์ฒด
    • ์›๋ณธ ๊ฐ์ฒด(๋“ค)
    const intro1 = {
    name: 'ํ™๊ธธ๋™'
    };
    const intro2 = { ...intro1 };
    โ€‹
    console.log(intro1, intro2);

     

    const personal = {
    age: 25,
    married: false
    };
    const career = {
    job: '๊ฐœ๋ฐœ์ž',
    position: 'ํŒ€์žฅ'
    }

     

    Object.assign(intro1, personal);
    console.log(intro1);

     

    // ๋‘˜ ์ด์ƒ์˜ ์›๋ณธ์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ์Œ
    Object.assign(intro2, personal, career);
    console.log(intro2);




    const obj1 = new Object();
    const obj2 = { x: 1, y: 2 };
    const obj3 = { y: 3 };
    const obj4 = { z: { a: 1 }}
    โ€‹
    Object.assign(obj1, obj2, obj3, obj4);
    โ€‹
    console.log(obj1);
    • ํ”„๋กœํผํ‹ฐ์˜ ํ‚ค๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ ๋’ค์— ์˜ค๋Š” ์ธ์ž์˜ ๊ฒƒ์ด ๋ฎ์–ด์”€
    obj2.x = 0;
    obj4.z.a = 2;
    โ€‹
    console.log(obj1);
    • ์–•์€ ๋ณต์‚ฌ



    2. keys, values, entries - ๊ฐ์ฒด์˜ ํ‚ค / ๊ฐ’ / [ํ‚ค, ๊ฐ’]์„ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜

    const obj = {
    x: 1,
    y: 2,
    z: 3
    };
    โ€‹
    console.log(
    Object.keys(obj),
    );

     

    console.log(
    Object.values(obj),
    );

     

    console.log(
    Object.entries(obj),
    );




    console.log(
    Object
    .keys(globalThis)
    .sort()
    );




    // ๋ฐฐ์—ด์— ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ
    const arr = [1, 2, 3, 4, 5];
    โ€‹
    console.log(
    Object.keys(arr),
    Object.values(arr),
    Object.entries(arr)
    );

     

    // ๊ฐ์ฒด๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜
    const str = 'ABCDEFG';
    โ€‹
    console.log(
    Object.keys(str),
    Object.values(str),
    Object.entries(str)
    );



    3. preventExtensions - ํ”„๋กœํผํ‹ฐ ์ถ”๊ฐ€ ๊ธˆ์ง€

    • isExtensible - ํ•ด๋‹น ์—ฌ๋ถ€ ํ™•์ธ
    const obj = { x: 1, y: 2 };
    โ€‹
    console.log(Object.isExtensible(obj));

     

    Object.preventExtensions(obj);
    โ€‹
    console.log(Object.isExtensible(obj));

     

    obj.x++; // ํ”„๋กœํผํ‹ฐ ์ˆ˜์ • ๊ฐ€๋Šฅ
    delete obj.y // ํ”„๋กœํผํ‹ฐ ์‚ญ์ œ ๊ฐ€๋Šฅ
    obj.z = 3; // ๐Ÿ’ก ํ”„๋กœํผํ‹ฐ ์ถ”๊ฐ€ ๊ธˆ์ง€
    โ€‹
    console.log(obj);




    // ๋ฐฐ์—ด์— ์ ์šฉ์‹œ
    const arr = [1, 2];
    Object.preventExtensions(arr);
    โ€‹
    arr[2] = 3; // ๋™์ž‘ํ•˜์ง€ ์•Š์Œ
    โ€‹
    console.log(arr);

     

    arr.push(3); // โš ๏ธ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
    โ€‹
    console.log(arr);



    4. seal - ํ”„๋กœํผํ‹ฐ ์ถ”๊ฐ€์™€ ์‚ญ์ œ ๊ธˆ์ง€

    • isSealed - ํ•ด๋‹น ์—ฌ๋ถ€ ํ™•์ธ
    const obj = { x: 1, y: 2 };
    โ€‹
    console.log(Object.isSealed(obj));

     

    Object.seal(obj);
    โ€‹
    console.log(Object.isSealed(obj));

     

    obj.x++; // ํ”„๋กœํผํ‹ฐ ์ˆ˜์ • ๊ฐ€๋Šฅ
    delete obj.y // ๐Ÿ’ก ํ”„๋กœํผํ‹ฐ ์‚ญ์ œ ๊ธˆ์ง€
    obj.z = 3; // ๐Ÿ’ก ํ”„๋กœํผํ‹ฐ ์ถ”๊ฐ€ ๊ธˆ์ง€
    โ€‹
    console.log(obj);



    5. freeze - ๊ฐ์ฒด ๋™๊ฒฐ - ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ

    • isFrozen - ํ•ด๋‹น ์—ฌ๋ถ€ ํ™•์ธ
    // ๊ฐ์ฒด์— ์‚ฌ์šฉ
    const obj = { x: 1, y: 2 };
    โ€‹
    console.log(Object.isFrozen(obj));

     

    Object.freeze(obj);
    โ€‹
    console.log(Object.isFrozen(obj));

     

    obj.x++; // ๐Ÿ’ก ํ”„๋กœํผํ‹ฐ ์ˆ˜์ • ๋ถˆ๊ฐ€
    delete obj.y // ๐Ÿ’ก ํ”„๋กœํผํ‹ฐ ์‚ญ์ œ ๊ธˆ์ง€
    obj.z = 3; // ๐Ÿ’ก ํ”„๋กœํผํ‹ฐ ์ถ”๊ฐ€ ๊ธˆ์ง€
    โ€‹
    console.log(obj);




    // ๋ฐฐ์—ด์— ์‚ฌ์šฉ
    const arr = [1];
    โ€‹
    Object.freeze(arr);
    โ€‹
    arr[0]++; // ๐Ÿ’ก ์š”์†Œ ์ˆ˜์ •, ์ถ”๊ฐ€, ์‚ญ์ œ ๋ถˆ๊ฐ€
    โ€‹
    console.log(arr);

    โš ๏ธ ์–•๊ฒŒ๋งŒ ์ ์šฉ

    const obj = {
    x: 1,
    y: { a: 1 }
    };
    โ€‹
    Object.freeze(obj);
    โ€‹
    obj.x++;
    obj.y.a++;
    โ€‹
    console.log(obj);
     
    ๋ฐ˜์‘ํ˜•
Designed by Tistory.