모던 JS 딥다이브 공부 정리 글입니다.
- 프로퍼티 : 객체의 상태를 나타내는 값(data)
- 메서드 : 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작(behavior)
-객체와 함수
자바스크립트의 객체는 함수와 밀접한 관계를 가진다.
함수로 객체르 생성할 수도 있고 함수 자체가 객체이기도 하다.
즉, 함수와 객체는 분리해서 생각할 수 없는 개념이다.
참고: 인스턴스
인스턴스란 클래스에 의해 생성되어 메모리에 저장된 실체.
클래스는 인스턴스를 생성하기 위한 템플릿(붕어빵 틀) 역할.
var emptyObject = {};
console.log(typeof emptyObject); // object
var person = {
name: 'Lee',
gender: 'male',
sayHello: function () {
console.log('Hi! My name is ' + this.name);
}
};
console.log(typeof person); // object
console.log(person); // {name: "Lee", gender: "male", sayHello: ƒ}
person.sayHello(); // Hi! My name is Lee
// 빈 객체의 생성
var person = new Object();
// 프로퍼티 추가
person.name = 'Lee';
person.gender = 'male';
person.sayHello = function () {
console.log('Hi! My name is ' + this.name);
};
console.log(typeof person); // object
console.log(person); // {name: "Lee", gender: "male", sayHello: ƒ}
person.sayHello(); // Hi! My name is Lee
// 생성자 함수
function Person(name, gender) {
this.name = name;
this.gender = gender;
this.sayHello = function(){
console.log('Hi! My name is ' + this.name);
};
}
// 인스턴스의 생성
var person1 = new Person('Lee', 'male');
var person2 = new Person('Kim', 'female');
**this**
는 생성자 함수가 생성할 인스턴스를 가리킨다.function Person(name, gender) {
var married = true; // private
this.name = name; // public
this.gender = gender; // public
this.sayHello = function(){ // public
console.log('Hi! My name is ' + this.name);
};
}
var person = new Person('Lee', 'male');
console.log(typeof person); // object
console.log(person); // Person { name: 'Lee', gender: 'male', sayHello: [Function] }
console.log(person.gender); // 'male'
console.log(person.married); // undefined
let person = {
firstName: "po", // 네이밍 규칙 준수 O
'last-name': 'po', // 네이밍 규칙 준수 X
var foo = {
0: 1, // key 0은 내부적으로 문자열임.
1: 2,
3: 3
}
var foo = {
name: 'Lee',
name: 'Cho',
}
console.log(foo.name) // 'Cho'
- 두 가지
- 마침표 프로퍼티 접근 연산자(.)
- 대괄호 프로퍼티 접근 연산자(
[...]
)
// 기존 ES5
var x = 1, y = 2;
var obj = {
x: x,
y: y,
}
console.log(obj) // {x:1, y:2}
//ES6
let x = 1, y = 2;
const obj = {x, y}
console.log(obj) // {x:1, y:2}
var
출처) 딥다이브 책