-
Object - 객체지향 | 생활코딩Javascript/ECMAScript 2009 (ES5) 2020. 2. 11. 01:07반응형
[출처 : https://opentutorials.org]
Object
Object 객체는 객체의 가장 기본적인 형태를 가지고 있는 객체이다. 다시 말해서 아무것도 상속받지 않는 순수한 객체다.
자바스크립트에서는 값을 저장하는 기본적인 단위로 Object를 사용한다. (Object : 모든 객체가 상속하는 조상 객체)
동시에 자바스크립트의 모든 객체는 Object 객체를 상속 받는데, 그런 이유로 모든 객체는 Object 객체의 프로퍼티를 가지고 있다.
Object API (Object가 가진 메소드)
# Object.메소드()
: Object 자신만 쓸 수 있음. (함수객체에 있는 메소드)
// Object.keys() var pesron = {"name":"agal","age":20,"city":"seoul"}; console.log(Object.keys(pesron)); // ["name","age","city"] /* 아래와 같다 Object(생성자함수).keys=function(){ ... } */
# Object.prototype.메소드()
: 모든 객체가 쓸 수 있음. 이유는 모든 객체가 Object를 상속하기 때문. (루트객체인 Object.prototype에 있는 메소드)
var array = new Array(1,2,3); console.log(array.toString()); // 1,2,3 /* 아래와 같다 Object.prototype.toString = function(){ ... } */
Object 확장
Object.prototype을 이용해서 Object를 확장해서 모든 객체가 사용할 수 있는 메소드 생성
Object.prototype.contained = function(value){ for(var name in this){ if(this[name] === value){ return true; } } return false; } // 객체에 인자가 있으면 true, 없으면 false를 반환하는 메서드를 만들어라 var object = {'name':'agal','city':'seoul'}; console.log(object.contained('agal')); var array = ['agal', 'gundam', 'armoredCore']; console.log(array.contained('gundam'));
Object 확장의 위험성
Object 객체는 확장하지 않는 것이 바람직하다. 왜냐하면 모든 객체에 영향을 주기 때문이다.
for (var name in object){ console.log(name); } /* 출력값 name city contained */
확장한 프로퍼티인 contained가 포함되어 있다. 객체가 기본적으로 가지고 있을 것으로 예상하고 있는 객체 외에 다른 객체를 가지고 있는 것은 개발자들에게 혼란을 준다. 이 문제를 회피하기 위해서는 프로퍼티의 해당 객체의 소속인지를 체크해볼 수 있는 .hasOwnProperty()를 사용.
for (var name in object){ if(object.hasOwnProperty(name)){ console.log(name); } } /* 출력값 name city */
※ hasOwnProperty는 인자로 전달된 속성의 이름이 객체의 속성인지 여부를 판단한다. 만약 prototype으로 상속 받은 객체라면 false
반응형'Javascript > ECMAScript 2009 (ES5)' 카테고리의 다른 글
참조 - 객체지향 | 생활코딩 (0) 2020.02.11 데이터 타입 - 객체지향 | 생활코딩 (0) 2020.02.11 표준 내장 객체의 확장 - 객체지향 | 생활코딩 (0) 2020.02.10 prototype - 객체지향 | 생활코딩 (0) 2020.02.09 상속 - 객체지향 | 생활코딩 (0) 2020.02.09