JS - 객체 / 값에 의한 전달 / 함수

정윤호·2024년 5월 19일
1

JS-Deep-Dive

목록 보기
2/7

객체:

오류 있

  1. 프로퍼티 키가 식별자 네이밍 규칙을 준수 X
const yoonho = {
  firstName: 'Yoon-ho',
  last-name: 'Jung' // SyntaxError: Unexpected token -
}

오류 없

  1. 빈문자열을 프로퍼티 키로 사용
const obj = {
  '': ''
};
console.log(obj); // {'': ''}
  1. 예악어를 프로퍼티 키로 사용
const obj = {
  var: '',
  function: ''
};
console.log(obj); // {var: '', function:''
  1. 프로퍼티 키의 중복 선언
const obj = {
  name: 'kim',
  name: 'lee'
};
console.log(obj); // {name: 'lee'}
  1. 존재 X 프로퍼티에 접근
const obj = {
  name: 'lee'
};
console.log(obj.age); // undefined

메서드 vs 메서드 아님

const obj = {
  name: yoonho,
  foo() { return this.name; } // foo 메서드 맞음
  bar: function(){ return this.name; } // bar 메서드 아님
}
  1. 메서드 특)
  • 생성자 함수 ㄴㄴ
  • 프로토타입 생성 ㄴㄴ

감상

원시값 vs 객체:

오류 없

  • 배열처럼 인덱스로 문자 수정
var str = 'string';
str[0] = 'S';
console.log(str); // 'string'

값에 의한 전달 vs 참조에 의한 전달

  1. 값에 의한 전달에서,
let score = 80;
let copy = score; 
score = 100;
  • 이래 버리면, score 변수와 copy 변수의 값이 다른 메모리 공간에 저장된 별개의 값.
  • 예전엔 당연하다고 생각했는데, 객체 다루고 보니 좀 이상. -> 어차피 같은 값인데, 같은 메모리주소 가지고 있어도 상관 없지 않나?
  • 근데 이런 궁금증 갖자 마자, 제조사(브라우저)에 따라, 동작 방식이 다를 수 있어.
  1. 객체
  • 객체 만들고 프로퍼티에 접근하는게, 큰 비용이 들어. (동적 탐색) / 147p

불변성 vs 재할당 불가

  • 값이냐 식별자

감상

  • shallow copy vs deep copy
  • 딥 카피해야지 쌍둥이 맹키로 다 배끼는게 아닌가? 똑같아야 딥카피 아닌가? -> 섈로우 카피가 참조. 딥카피는 말 그대로.
profile
우리 인생 화이팅~

0개의 댓글