리터럴과 속성
변수에는 하나의 값만 넣을수 있다
그리고 이 값을 출력하고 싶은 함수를 만든다면
저렇게 parameter 값으로 만들 각 전달해줘야한다
함수를 정의 할때도 역시 두가지의 parameter 값을 받아오게 만들어야 하는데. .
Object를 쓰지 않고 저렇게 만드는건 정말 비효율적인 방법이다
새로운게 만들어지면 저렇게 추가를 해야 하고.. 뭐 갯수 점점 늘어나면 관리도 힘들고 복잡해지니깐...
그래서 Object를 쓰는거
이렇게 만들고
함수쪽도 이제 필요없는거 없애고 수정해주면
끝!
이건 이제 쓸 필요 없음
그냥 아까 담은 object명인 downy를 뽑으면 저래 나옴
간단해짐
Objcet를 만드는 방법으론
2가지가 있은데
중괄호 써서 바로 만드는 방법과
class를 이용해서 new 키워드써서
template를 가져와 쓰는 방법이 있다
저기 obj1 처럼 중괄호 써서 만든게 아까
이건데
JS는 동적으로 타입이 런타임일때 결정이 된다
때문에 저거 중간에 뭐 집어 넣는것도 가능은 하다
이렇게..
이런게 다른 언어에선 흔하게 되는 일이 아니다
동적으로 너무 막 저런다면 어딘가에서 에러가 난다랄지 암튼 난리가 난다
(몰라이씨.. 근다데? 좀 까먹어서 이제 다시 공부하는데 뭐.....)
결론 이런짓이 가능은 하지만 절때로 하지는 마라... 그냥 Object를 고쳐써..
중간에 넣는것도 된다면....
삭제도 된다.
object['key']
데이터에 접근을 이렇게
두가지로 접근이 가능한데
저기 배열쪽 저건 꼭 string type으로 받아와야 한다
왜?
안그럼 값이 안나오니까
그럼.. 저 두가지 방식이 있다는건 알았는데
뭐 어떨때 쓰가니 두가지임?
1. 코딩하는 그 순간 그 키에 해당하는 값을 받아오고 싶을때 닷(.) 기호를 써
2. [ ] 이건 우리가 정확 뭐 어떤 키가 있는지 모를때, 실시간으로 원하는 키의 값을 받아오고 싶을때
코딩을 하는데.. 예를 들어
obj와 key 를 받아 오브젝트에 있는 키값에 상응하는 값을 출력하는 printValue라는 함수다
근 이게 언제 어떤 key값을 받아오게 될지 아무도 모르는
저 원하는 key를 사용자에게 input을 받아 출력해야하는 함수하면
이 key는 어떤걸 출력할지 코딩을 하는 이 시점에선 알수가 없다
출력해야 하니 저렇게 obj.key 해놓고
key값은 아까 string 타입으로 써야 된다 했으니 뽑아보면.....
안나온다
그래서 이럴땐
중괄호 쳐서 출력해야 한다
뭐~이 씨 다 된다 이렇게. . .
속성 값 shorthand
사람의 이름과 나이를 써놓은 object가 있는데
생각해 보자.. 이거 만약 100명이 있다면 저렇게 100개 만드는게 맞나?
아니지
makePerson 이란 함수를 만들어서
person4에서 방금 만든 makePerson을 호출해 주면 됨
그런데. . 이 JS에선 속성값 shorthand 라는 기능이 있어서
저렇게 key 값과 value값이 동일하다면 그걸 이렇게. .
생략하게 가능하다
일반적으로 없애는게 또 가독성 편하지 않것
근데 object를 계속 반복해서 만들다보면
문제점이. . name이랑 age는 계속 써야 되는데?
그래서 저 makePerson 이라는 함수를 만들어서 연결해 썻...고
이거 뭐 class랑 같은데?
class가 등판하기 전엔 많이들 이렇게 썻음
이렇게.. 뭔 계산같은거 없이 그냥 object만 생성하는 함수일 경우
그 함수명을 애초에
대문자로 쓰고 안에는 저렇게 this 를 써서 각각 연결을 해준다
in operator
해당 오브젝트 안에 키가 있나 없나 확인하는것
존재하지 않는걸 찾으면 당연 false가 나오고
출력을 하면 undefined가 나옴
for ... in VS for ... of
이것은 downy가 갖고있는 key들을 하나씩 저 key라는 지역변수 담아 불러오는거
아 그리고 앞에 console.clear();은 지금껏거 다 지우는것
다른 방법. .
배열, 리스트 같은 순차적인거
순차적 데이터들의 모든 값을 가져오는거
for 문 할때 했었는데
그건 좀.. 비효율적이니
이렇게 하는편이 쉽고 간편함
cloning
한번 복제를 해 보겠다
user에 corry를 담았음.
그리고 user2 = user 라고 해서 연결 했고
그 user2의 name을 Dorry 라고 바꿨더니..?
user의 name이 바꼈다
이상한게 아니고 굉장히 논리적이며 당연함..
이런식으로 말고 object를 복제 할 방법읎나..?
타겟이 될 빈 오브젝트 하나 만들고 (user4)
object.assign( 타겟, 복사할거)
해서 복사 뜬 다음 출력하면
복사가 됨
저거 이제 보니 user4 자리에 { } 들어가는건데 이렇게 합쳐도. . .
하나더. .
그럼 이렇게 두개의 오브젝트를 복사 떠서 mixed에 적용한다면?
그 이유는
뒤에것을 복사해서 앞에것을 덮어 버리기 때문임
fruit2의 blue가 fruit1의 red를 덮어서 사라져버렸음. .
'Web > JavaScript' 카테고리의 다른 글
7)JavaScript_ 배열(Array) 함수 모음 (0) | 2023.06.03 |
---|---|
6)JavaScript_Array, APIs (0) | 2023.06.01 |
4)JavaScript_Class & Object 차이점, 객체지향언어 클래스 정리 (0) | 2023.05.30 |
3)JavaScript_ Arrow Function, 함수 선언과 표현 (0) | 2023.05.29 |
2)JavaScript_operator, if, for loop (0) | 2023.05.27 |