Primitive Type vs Reference Type

Seung·2022년 2월 10일
0

Primitive Type


😄 종류

  • boolean
  • number
  • string
  • null
  • undefined

😄 code 1.

// number
let age = 2;
console.log(age); // output : 2
age = 90;
console.log(age); // output : 90
// string
let name = 'seung';
console.log(name); // output : seung
name = 'oak';
console.log(name); // output : oak
  • 변수 하나당 하나의 데이터만 넣을 수 있다
  • 데이터 값이 복사된다

Reference Type


😄 종류

  • object

😄 code 1.

// Object
const obj = {}; // Object literal
const obj2 = new Object(); // Object Constructor

Object ?

  • {key : value}, key와 value의 집합체
  • 위 코드에서는 const로 선언했기 때문에 데이터 변경이 불가능하다
    • 주의할점은 obj는 데이터를 복사하는게 아니라 주소(reference)를 복사하기 때문에 obj의 reference 변경이 불가능한거지, 내부 데이터 변경이 불가능한 것이 아니다.

😄 code 2.

// obj 생성
const obj = {
  name: 'seung',
  age: 27,
};
console.log(obj); // output : {name: 'seung', age: 27}
// print 함수
function print(person) {
  console.log(person.name); // output : seung
  console.log(person.age); // output : 27
}
print(obj);
// Object에 값 추가
obj.job = 'developer';
console.log(obj); // output : {name: 'seung', age: 27, job: 'developer'}
// Object 데이터 삭제
delete obj.developer;
console.log(obj); // output : {name: 'seung', age: 27}
  • JavaScript는 타입이 동적으로 정의되기 때문에 위 코드처럼 데이터를 Object에 추가하고 삭제하는 것이 가능하지만 유지보수가 어렵다는 단점이 있다

😄 code 3.

const obj = {
  name: 'seung',
  age: 27,
};
// Computed properties
function print(obj, key) {
  console.log(obj[key]); // output : 27
  console.log(obj.key); // output : undefined, Why? obj에 key라는 properties는 없기 때문에
}
print(obj, 'age');
  • obj.name처럼 .은 key에 해당하는 value를 가져오고 싶을 때 사용
  • obj['name']는 실시간으로 정확하게 어떤 key를 사용할지 모를 때 사용
  • 주의할점은 key는 항상 string타입('')으로 받아와야한다.

😄 code 4.

const obj = {
  name: 'seung',
  age: 27,
};
const obj2 = make('jung', 20);
console.log(obj2); // output : {name: 'jung', age: 20}
function make(name, age) {
  return {
    name: name,
    age: age,
  };
}
  • JavaScript는 key와 value의 이름이 동일하다면 하나는 생략해서 작성이 가능하다. 즉 return { name, age }로 작성해도 오류 안뜬다

😄 code 5.

const obj = {
  name: 'seung',
  age: 27,
};
// key가 Object 안에 있는지 확인하는 방법
console.log('name' in obj); // output : true
console.log('job' in obj); // output : false
// Object인 obj 안에 있는 key들을 a에 저장하는 for..in
for (a in obj) {
  console.log(a);
}

😄 code 6.

const obj = {
  name: 'seung',
  age: 27,
};
// Object.assign(복사해서 넣을 target, 복사대상 source)
// 비어져있는 obj2 정의
const obj2 = {};
Object.assign(obj2, obj);
console.log(obj2); // output : name: 'seung', age: 27}
  • 복사대상인 source는 여러개도 가능하고 배열도 가능하다

😍 코드 지적은 언제나 환영입니다. 읽어주셔서 감사합니다. 😍

profile
지적은 제 발전의 원동력입니다. 사소한 것이라도 지적해주세요 :)

0개의 댓글