명확하게 머리속에서 정리가 되지 않아서 글로 남겨본다.
인스턴스와 오브젝트는 어떤 관계인가?
오브젝트가 인스턴스고 인스턴스가 오브젝트 아닌가? 라는 의문이 들지만
쉽게 말하자면 오브젝트를 사용하여 오브젝트를 생성하면 반환된 오브젝트가 인스턴스(instance)이다.
변수에 할당, 반환된 오브젝트가 인스턴스인 것이다.
그렇다면 인스턴스를 생성하는 이유는 무엇일까?
function Object() {
this.name = 'Kim'
};
var obj1 = new Object();
obj1.name = 'Choi';
console.log(obj.name); // Choi
var obj2 = new Object();
console.log(obj2.name); // Kim
위 코드처럼 원본 Object에 name 프로퍼티에 'Kim'이란 값을 설정하면 모든 인스턴스는 'Kim'이란 같은 값을 갖게 된다.
하지만 생성된 인스턴스의 name 프로퍼티에 값을 다시 설정하면 다시 설정한 값을 가질 수 있다.
name 프로퍼티의 값을 바꿨다고해서 원본 오브젝트의 name프로퍼티의 값이 바뀌는 것은 아니다.
이처럼 인스턴스마다 다른값을 유지,제어하기위해서 인스턴스를 생성하는 것이다.
머리에 집어넣기
- "인스턴스"라는 용어는 객체와 유사하다. 다만 객체는 조금 더 일반적인 의미인 반면, "인스턴스"라고 표현하면
"현재 생성된 바로 그 객체"라는 인스턴트(instant)한 뉘앙스를 더 짙게 표현할 수 있다. - 인스턴스 멤버란? 인스턴스(객체)마다 가지고있는 필드(변수)와 메서드를 말한다.
이들은 각각 인스턴스 필드(변수),인스턴스 메서드라고 부른다.
인스턴스 멤버는 객체에 소속된 멤버이기 때문에 객체없이는 사용할 수 없다.
헷갈려도 꾸준히 😥
'자바스크립트🔥' 카테고리의 다른 글
JS의 꽃 객체(2) 점표기법과 대괄호법 (0) | 2021.07.22 |
---|---|
JS의 꽃 객체(1) (0) | 2021.07.22 |
ES6 / 헷갈리는 그 이름 this 3편 / 생성자 함수 호출 (0) | 2021.05.10 |
ES6 / 헷갈리는 그 이름 this 2편 / 메서드호출 (0) | 2021.05.10 |
ES6 / 헷갈리는 그 이름 this 1편 / 함수호출 (0) | 2021.05.09 |