Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바스크립트 element api
- oracle db
- 오라클
- GIT
- 카카오프로젝트100
- 자바스크립트 객체
- 보안뉴스요약
- 깃허브
- 보안뉴스
- 자바스크립트 jQuery
- oracle
- 랜섬웨어
- 보안뉴스 요약
- 카카오프로젝트
- Oracle SQL
- numpy
- 자바스크립트 기본 문법
- 파이썬
- 자바스크립트
- 보안뉴스 한줄요약
- 카카오프로젝트 100
- 보안뉴스한줄요약
- python
- javascript
- 자바스크립트 node
- php
- ES6
- 자바스크립트 prototype
- 다크웹
- 자바스크립트 API
Archives
- Today
- Total
FU11M00N
[ JavaScript ] JS Object 본문
생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅입니다.
- Object란?
Object 객체는 객체의 가장 기본적인 형태를 가지고 있는 객체입니다.
다시 말해서 아무것도 상속받지 않는 순수한 객체입니다.
자바스크립트에서는 값을 저장하는 기본적인 단위로 Object를 사용하고 있습니다.
동시에 자바스크립트의 모든 객체는 Object 객체를 상속 받는데,
그런 이유로 모든 객체는 Object 객체의 프로퍼티를 가지고 있습니다.
Object.prototype.contain = function(neddle) {
for(var name in this){
if(this[name] === neddle){
return true;
}
}
return false;
}
var o = {'name':'test', 'city':'seoul'}
console.log(o.contain('test'));
var a = ['test','test1','test2'];
console.log(a.contain('test1'));
하지만 위와같은 방법은 올바르지 않습니다.
- 확장의 위험
위 예제를 실행시킨 다음에, 아래 예제를 실행시켜 보도록 하겠습니다.
for(var name in o){
console.log(name);
}
확장한 프로퍼티인 contain가 포함되어있습니다.
객체가 가지고 있을 것이라고 예상하는 객체 이외에도 다른 객체를 가지고 있는 것들은 개발자에게 혼란을 야기합니다.
그래서
이 문제를 회피하기 위해서는
프로퍼티의 해당 객체의 소속인지를 체크해볼 수 있는 hasOwnProperty를 사용해야합니다.
아래는 예제입니다.
for(var name in o){
if(o.hasOwnProperty(name))
console.log(name);
}
전과는 다르게 contain이라는 프로퍼티가 빠졌습니다.
hasOwnProperty는 인자로 전달되는 속성의 이름이 객체의 속성인지 아닌지 판단합니다.
prototype으로 상속받은 객체 라면 false가 출력됩니다.
SUA 정보보안 멘토링에 참여하고 있습니다.
'SUA 정보보안 > JavaScript' 카테고리의 다른 글
[ JavaScript ] 복제와 참조데이터 (0) | 2021.02.04 |
---|---|
[ JavaScript ] JS 원시데이터,wrapper object, (0) | 2021.02.04 |
[ JavaScript ] JS 표준 내장 객체 (0) | 2021.02.04 |
[ JavaScript ] JS prototype, prototype chain (0) | 2021.02.04 |
[ JavaScript ] JS 상속 (0) | 2021.02.04 |
Comments