📝
서은 STUDY_SCRIPT
  • JAVASCRIPT 기록
  • JAVASCRIPT 문법정리
    • 데이터 저장하기
    • 데이터 불러오기
    • 데이터 실행하기
    • 데이터 제어하기
    • 면접질문 정리
  • PHP를 이용한 사이트 작업
    • PHP와 MySQL
      • 댓글쓰기
      • 회원가입
      • 로그인
      • 게시판
        • 페이지네이션 & 게시글보기
        • 수정/삭제/목록/검색
  • 생활코딩 JavaScript
    • JavaScript 입문수업
      • Basic
        • 자바스크립트 기본 세팅
        • 데이터타입
        • 변수
        • 연산자
        • 조건문
        • 반복문
        • 함수
        • 배열
        • 객체
        • 모듈
        • 정규표현식
      • 함수지향
        • 유효범위
        • 값으로서 함수
        • 값으로서 콜백
        • 클로저
        • arguments
        • 함수의 호출
      • 객체지향
        • 생성자와 new
        • 전역객체
        • this
        • 상속
        • Prototype
        • 표준내장객체의 확장
        • Object
        • 데이터 타입
        • 복제 & 참조
    • JavaScript Basic
      • 자바스크립트란?
      • 데이터타입
      • 변수와 대입연산자
      • 제어할 태그 선택
      • 비교연산자와 불리언
      • 조건문 if
      • 리팩토링
      • 배열 [ ]
      • 반복문 while
      • 배열과 반복문
        • 배열과 반복문의 활용
      • 함수
        • 함수의 활용
      • 객체 { }
        • 객체와 반복문 for~in
        • 프로퍼티와 메소드
        • 객체의 활용
      • 파일로 쪼개서 정리정돈
      • 라이브러리 & 프레임워크
      • UI & API
    • Web Browser
      • JavaScript란?
      • BOM
        • 전역객체 window
        • 사용자와 커뮤니케이션
        • Location 객체
        • Navigator 객체
        • 창 제어
      • DOM
        • 제어 대상 찾기
        • jQuery
        • HTMLElement
        • Element 객체
          • 식별자 API
          • 조회 API
          • 속성 API
        • Node 객체
          • Node 관계 API
          • Node 종류 API
          • Node 변경 API
          • jQuery 노드 변경 API
          • 문자열로 노드 제어
        • HTMLCollection
      • 이벤트
        • 이벤트 등록
        • 이벤트 전파(버블링과 캡처링)
        • 이벤트 기본 동작 취소
        • 이벤트 타입
      • 네트워크 통신
        • Ajax
        • JSON
  • NOMAD JAVASCRIPT
    • VanillaJS
      • Why JS?
      • ES5, ES6
      • Basic
        • Alert & Console
        • Variable
        • Data Types
        • Array & Object
      • Function
      • DOM
        • Event & Event handler
        • Conditional
        • Function Practice
      • Momentum App
        • Making a JS Clock
        • Saving the User Name
        • To-Do List
        • Image Background
        • Getting Weather
  • DREAM CODING
    • 자바스크립트 기초 강의 (ES5+)
      • JavaScript 역사
      • async & defer / Strict Mode
      • Variable / Hoisting / Data Type
      • Operator / if / Loop
      • Function
        • 함수의 선언
        • 함수의 표현
      • Class
      • Object
      • Array
      • Array API
      • JSON
      • Callback
      • Promise
      • Async & Await
  • WEB BOS
    • #JavaScript30
Powered by GitBook
On this page
  • Object 객체
  • 1. Object API 사용법
  • 2. Object 확장
  • 3. Object 확장의 위험
  • 3-1. Object 확장 위험의 회피

Was this helpful?

  1. 생활코딩 JavaScript
  2. JavaScript 입문수업
  3. 객체지향

Object

Object 객체

Object 객체는 객체의 가장 기본적인 형태를 가지고 있는 객체로, 아무것도 상속받지 않는 순수한 객체

동시에 자바스크립트의 모든 객체는 Object 객체를 상속받기 때문에 모든 객체는 Object 객체의 Property를 가짐

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

1. Object API 사용법

//Object.keys() : Key값을 리턴해주는 Method
var arr = ["a", "b", "c"];
console.log('Object.keys(arr)', Object.keys(arr)); // ["0", "1", "2"]
//인자로 arr을 받아서 처리

//Object.prototype.toString()
var a = [1,2,3];
a.toString(); //1,2,3

//Object.prototype.tostring() : tostring()은 문자열을 반환하는 object의 대표적인 방법
var o = new Object();
console.log('o.toString()', o.toString()); //o.toString() [object Object]
var a = new Array(1,2,3);
console.log('a.toString()', a.toString()); //a.toString() 1,2,3
//object의 method인 toString()을 prototype을 통해 사용가능

2. Object 확장

Object 객체를 확장하면 모든 객체가 접근할 수 있는 API를 만들 수 있음

Object.prototype.contain = function(neddle) {
    for(var name in this){ //this는 var o 또는 var a
        if(this[name] === neddle){
            return true; //찾는 인자값이 있다면 true
        }
    }
    return false; //찾는 인자값이 없다면 false 
}
var o = {'name':'egoing', 'city':'seoul'}
console.log(o.contain('egoing')); //true
var a = ['egoing','leezche','grapittie'];
console.log(a.contain('leezche')); //false

3. Object 확장의 위험

Object 객체는 확장하지 않는 것이 바람직 모든 객체에 영향을 줄 수 있기 때문에 원하는 값 이외에 다른 값도 같이 출력 될 수도 있음

Object.prototype.contain = function(neddle) {
    for(var name in this){ 
        if(this[name] === neddle){
            return true;
        }
    }
    return false;
}
    
var o = {'name':'egoing', 'city':'seoul'}
var a = ['egoing','leezche','grapittie'];
for(var name in o){
    console.log(name);
} //name,city,contain → 확장 프로퍼티인 contain이 포함됨
for(var name in a){
    console.log(name);
} //0,1,2,contain → 확장 프로퍼티인 contain이 포함됨

3-1. Object 확장 위험의 회피

.hasOwnProperty() : Property의 해당 객체의 소속인지를 체크해볼 수 있음

hasOwnProperty는 인자로 전달된 속성의 이름이 객체의 속성인지 여부를 판단 만약 prototype으로 상속 받은 객체(ex. contain)라면 false

Object.prototype.contain = function(neddle) {
    for(var name in this){ 
        if(this[name] === neddle){
            return true;
        }
    }
    return false;
}
    
var o = {'name':'egoing', 'city':'seoul'}
var a = ['egoing','leezche','grapittie'];
for(var name in o){
    if(o.hasOwnProperty(name)){
        console.log(name);  
    }
} //name, city

for(var name in a){
    if(a.hasOwnProperty(name)){
        console.log(name);  
    }
} //0, 1, 2
Previous표준내장객체의 확장Next데이터 타입

Last updated 3 years ago

Was this helpful?