var afk = {
name: 'kim',
age: 30
}
위 코드에서 객체 afk의 첫 번째 프로퍼티 키는 name, 프로퍼티 값은 'kim' 이다.
var obj = {};
var key = 'hello';
obj[key] = 'world';
위와 같이 빈 객체 변수에 대괄호로 키 값 변수를 넣고 할당해주면
{hello : 'world'} 와 같이 프로퍼티가 동적 생성 된다.
빈 문자열도 키 값으로 지정할 수 있지만 쓰지마라..
let x =1;
let y =1;
let obj = {x, y}
console.log(obj); // { x:1, y:1 }
var obj = {
name: 'Lee',
sayHi: function(){
console.log('afk' + this.name);
}
}
obj.sayHi();
위는 es5의 메소드 사용 방법이다.
아래는 es6의 메소드 사용 방법이다.
const obj = {
name: 'Lee',
sayHi(){
console.log('afk' + this.name);
}
}
obj.sayHi();
둘 다 같은 결과를 출력하며 한 가지 다른 점은 메소드를 축약한 표현은 Prototype 객체가 없어서 생성자 함수로 사용 불가능하다!!!!
따라서 불변성을 가지는 원시 값을 할당한 변수는 값을 변경하려면 재할당 밖에 방법이 없다!
var str = "string";
console.log(str[0]); // s
console.log(str.length); //6
console.log(str.toUpperCase()); // STRING
자바스크립트는 참 이상하다.. 원시 값이라면서 객체처럼 동작한다..
원시 타입의 값을 변수에 할당하면 변수가 기억하는 메모리 주소를 통해 메모리 공간에 접근하면 원시 값에 접근할 수 있다. 즉, 원시 값을 할당한 변수는 원시 값 자체를 값으로 갖는다!
그러나!!
객체를 할당한 변수가 기억하는 메로리 주소를 통해 메모리 공간에 접근하면 참조 값에 접근하는 것이다. 참조 값은 생성된 객체가 저장된 메모리 공간의 주소, 그 자체이다.
=> 한 마디로 메모리 한 번만 거치면 불변성인 Primitive 타입, 두 번 거치면 mutable 한 값으로 쉽게 이해했다.
더 알아보고 추가해서 포스팅해 볼 예정이다..ㅠㅡㅠ 이해가 잘 안된다