# object

## Object

**Object 객체는 객체의 가장 기본적인 형태를 가지고 있는 객체**이다. 다시 말해서 **아무것도 상속받지 않는 순수한 객체**다.자바스크립트에서는 값을 저장하는 기본적인 단위로 Object를 사용한다.

**Object -> 모든 객체의 부모**&#x20;

**Object** :point\_right: **모든객체가 가지고 있어야하는 공통된 기능이 있다 object의 prototype 객체를 수정하는것을 통해서 그러한 기능을 만들 수 있다.**

**object 더 자세히 알아보기(어떠한 메소드가 있는지 확인 해보기 ) ->** [**https://developer.mozilla.org/ko/**](https://developer.mozilla.org/ko/)&#x20;

&#x20;**\* object  prototype  이크마3 이여야 모든 브로우저에서 지원이 된다. object 내장객체를 사용할때는 브라우저 지원이 어디까지 되는지 확인해봐야한다. \***

```javascript
var grades = {'egoing': 10, 'k8805': 6, 'sorialgi': 80};
```

### object 확장&#x20;

```javascript
Object.prototype.contain = function(neddle) {
    for(var name in this){
        if(this[name] === neddle){
            return true;
        }
    }
    return false;
}
var o = {'name':'egoing', 'city':'seoul'}
console.log(o.contain('egoing')); //true
// 만약에 graphottie 라고 하면 false가 나올것이다 존재하지 않기때문에 
var a = ['egoing','leezche','grapittie'];
console.log(a.contain('leezche')); //true
```

### object 확장위험

그런데 Object 객체는 확장하지 않는 것이 바람직하다. 왜냐하면 **모든 객체에 영향을 주기 때문이다.**

**확장한 프로퍼티인 contain이 포함**되어 있다. **객체가 기본적으로 가지고 있을 것으로 예상하고 있는 객체 외에 다른 객체를 가지고 있는 것은 개발자들에게 혼란**을 준다. 이 문제를 회피하기 위해서는 프로퍼티의 해당 **객체의 소속인지를 체크해볼 수 있는 hasOwnProperty를 사용하면 된다.**

```javascript
for(var name in o){
    if(o.hasOwnProperty(name))
        console.log(name); //name city 
        //hasOwnProperty -> 자신의 프로포티를 가지고 있는가를 확인해줌
}
```
