var person = {
name: 'Cool', //property
sayHello: function() {
console.log(`Hello! My name is ${this.name}`);
}
};
Primitive type | Object type |
---|---|
원시 값은 변경 불가능한 값 | 객체는 변경 가능한 값 |
메모리 공간에 실제 값이 저장 | 메모리 공간에 참조 타입의 값이 저장 |
pass by value | pass by reference |
number, bool, null, undefined, string, symbol | object |
// code로 표현하면 다음과 같다.
var num;
num = 10;
num = 1000;
pass by value vs pass by reference
let a1 = 5;
let a2 = a1; // 값에 의한 전달
a2 = 10; // a2: 5 -> 10
console.log(a1); // 5
console.log(a2); // 10
let b1 = {
name: "Cool"
};
let b2 = b1; // 참조 값 전달, shallow copy
b2.name = "Change";
console.log(b1 === b2); // true;
console.log(b1); // Change
console.log(b2); // Change
var person = {
name: 'Cool',
age: 20
};
console.log(typeof person); // object
console.log(person); // {name:"Cool", age:20}
// 객체 생성
var person = new Object();
// property 추가 방법
person.name = 'Cool';
person.age = 20;
var person2 = new Object(person);
console.log(person); // {name: 'Cool', age: 20}
console.log(person2); // {name: 'Cool', age: 20}
// constructor function
function Person(name, age) {
this.name = name;
this.age = age;
}
// 객체 생성
var person1 = new Person('Cool', 20);
var person2 = new Person('hot', 30);
console.log(person1); // {name: 'Cool', age: 20}
console.log(person2); // {name: 'hot', age: 30}
var person = {
name: 'Cool',
age: 20
};
console.log(Object.getPrototypeOf(person) === Object.prototype); // true
var person2 = Object.create(person);
console.log(Object.getPrototypeOf(person2) === Object.prototype); // false
console.log(Object.getPrototypeOf(person2) === person); // true
모던 자바스크립트 Deep Dive
https://poiemaweb.com/js-data-type-variable
Object