[javascript] 10-19 자바스크립트 스터디 - 객체지향-Object
2021-10-19
10-18~10-19 [객체지향-Object]
Object
- 값을 저장하는 기본적인 단위
- 자바스크립트에서는 값을 저장하는 기본적인 단위로 Object를 사용한다.
- 제일 기본적인 형태를 가지고 있는 객체이
- 객체지향 프로그래밍에 있어서의 의의
- 상속예제를 통해서 모든 객체는 Object 객체의 property를 가지고 있다는걸 알 수 있다. 모든 객체들의 원형이 될 수 있다. Object 객체의 prototype을 이용해, Object 객체 속성을 갖고 있는 모든 객체가 prototype 기반 메소드 및 프로퍼티들을 사용할 수 있다.
Object 메뉴얼 읽는 법
Object 메뉴얼 사이트
- MDN을 통해서 볼 수 있다.
- specifications, browser compatibility를 체크해서 사용해야함!
- Object.methods와 Object.prototype.methods의 차이는?
- 쉽게 Object.func()는 Object만 사용할 수있는 함수고 Object.prototype.func() 그 Obejct를 상속받는 객체들이 사용할 수 있는 함수다라고
- ex) Object.keys(), Object.prototype.toString()
Object.keys(인자) 인자로 바로 줌. Object 라는 키워드는 생성자 함수,
// 함수는 자바스크립트에서 객체이기 때문에 // Object라는 생성자 함수의 keys로 Object.keys = function(){} // 이렇게 정의가 되어있을 것임prototype이 있는건 어떤 객체를 만들고, 어떤 식별자.toString()…
// 생성자 함수를 이용해서 new Object라고 실행시키는 순간에 // Array라는 객체를 생성할 때도 javascript 에서 내부적 & 암시적으로 Object 부모 속성을 다 받아옴. // 객체는 prototype이라는 특수 프로퍼티에 저장되있는 메소드/프로퍼티를 원형으로 하는 객체가 생성 Object.prototype.toString = function(){} // 그래서 var arr = new Object(); arr.toString()해야함
Object 객체의 확장
어느 객체에서나 사용할 수 있는 메소드를 만드는 방법
- 자기가 만들고자하는 대략적인 인상을 가지고 코딩을 하게되면, 나중에 사용하기 불편한 api나 변수 객체를 만들게 될 수 있다
- ‘어떻게 사용될 것인가’를 먼저 생각하고 만들어서 구현하면 좋을 것이다. 기능의 원리적인 측면보다 어떻게 사용되고 어떤 취지의 기능인가를 먼저 생각하고 구현하는게 좋음…
// for 문은 foreach, for문 말고도 for in 문을 이용해 열거할 수 있다.
for(var name in this){
// this의 타입이 Object이면...
// this의 타입이 Array이면...
}
- 모든 객체에 영향을 주고싶어서 객체의 확장을 하는거지만, 모든 객체에 영향을 주기 때문에 위험성 또한 같이 존재한다. (위험성 강의: https://www.inflearn.com/course/지바스크립트-언어-기본/lecture/2576?tab=note)
- object.prototype에 메소드나 프로퍼티를 추가한다는 행위는 신중하게 해야할 행위. 어떠한 위험이 있는지 분명하게 이해한 상태에서 그것이 최소의 단위에서.. 광역객체에서 영향을 주지 않게끔 사용해야한다.
-
a.hasOwnProperty()오브젝트가 갖고있는 메소드인데 property에 해당이 댐. 자신의 프로퍼티에 ‘직접적으로’ 해당이 되고 있느냐를 판별해줌
상속받고있는 property와 자기자신이 직접 해당하고있는 property인지 판별해주는 좋은 메소드