본문 바로가기
javascript

[자바스크립트] 빌트인객체(2) js 전역객체와 기본제공 객체

by jinbro 2017. 4. 25.
[먼저 봐야하는 게시글]
- 빌트인객체(1) 브라우저와 웹페이지를 위한 객체 : http://jinbroing.tistory.com/101


[전역객체란]
- 전역객체 : (클라이언트 사이드 : window), (서버사이드(nodejs)  : global) / 모든 객체의 유일한 최상위객체
- 브라우저 화면 뿐만 아니라, 코드 상의 자바스크립트를 다룰 수 있는 최상위 객체, 그래서 루트 객체라함
- 전역객체의 자식 객체로 기본적으로 제공하는 객체(빌트인 객체)도 프로퍼티로 포함됨
- BOM에서의 window와 전역객체인 window 같음


- constructor가 없음 === new 키워드를 통해 새롭게 생성할 수 없음(유일한 객체)
- document와 같은 widnow 하위 객체를 통해 제어를 할 때 window는 생략해도됨
1
2
var jinbro = document.getElementById("jinbro")
/* window.document.getElementById("jinbro") */
cs

- 전역객체는 전역변수와 전역함수를 프로퍼티로 가짐
1
2
3
4
5
6
7
var jinbro = "박진형"
console.log(window.jinbro) // "박진형"
 
function hi(){
     console.log("hi")
}
window.hi(); // "hi" 
cs

- window 객체 기타 프로퍼티
1) Infinity : 양, 음 무한대를 나타내는 숫자값, 자료형은 number
1
console.log(3/0// Infinity
cs

2) NaN : 숫자가 아님을 나타내는 숫자값, 자료형은 number
1
console.log(1 * "str"// NaN
cs

3) undefined : 변수에 값이 대입되지 않았음을 나타내는 값, 기본값은 자료형 undefined를 가짐(스코프 검색시 없을 경우)
1
console.log(jinbro) // undefined
cs

4) isFinite() : isFinite 함수의 파라미터로 전달된 인수가 정상적인 수인지 검사하여 Boolean형으로 반환해주는 전역함수
1
2
isFinite("str"// false 
isFinite(null// true, 0
cs
- null은 true를 반환하는데, null을 number로 변환하여 검사를 수행한 결과(느슨한 타입의 위험성 : http://jinbroing.tistory.com/93)

5) isNaN() : isNaN 함수의 파라미터로 전달된 값이 숫자인지 검사하여 Boolean형으로 반환해주는 전역함수
1
2
3
4
isNaN(NaN) // true
isNaN(undefined) // true
isNaN(null// false, 0
isNaN("str"// true
cs
- NaN 자료형은 number이지만 NaN이기때문에 true 반환
- undefined는 값이 정의되지 않은 것, 빈객체는 비어있는 값이라 true 반환
- 앞서와 마찬가지로 null은 숫자로 변환되어 0이기 때문에 false를 반환

6) parseFloat() / parseInt() : 각각 함수의 파라미터로 전달된 문자열을 명시적으로 자료형 변환할 때 사용하는 함수
1
2
parseFloat("3.14"// 3.14
parseInt("123123123 hi"// 123123123
cs
- parseFloat()은 소수점숫자로 변환
- parseInt()는  정수로 변환


[window의 프로퍼티, js가 기본적으로 제공하는 객체]
- 공통적으로 필요한 기능을 개발자가 모두 개발하지않고, js가 기본적으로 제공하는 객체를 말함
- Object(객체), Function(함수), String(문자열), Array(배열), Math(수학), Date(날짜와 시간) 등의 객체가 있음

1) Object
1
2
3
4
5
6
console.log(typeof(window.Object)) // "function"
var obj = new Object() // 빈 객체 생성
typeof(obj) // "object"
 
var strObj = new Object("str")
console.log(typeof(strObj) + ": " + strObj) // object: String { 객체 구성 내용 }
cs
- window.Object의 타입은 "function", new 키워드(연산자)를 통해 래퍼(wrapper) 객체를 생성함
- new 키워드로 객체를 생성할 때 인수로 특정 타입의 값을 전달하면 강제로 형변환된 객체가 반환됨
=> 자료형은 "object"(최상위), 앞으로 설명할 기본 제공하는 객체의 프로퍼티를 사용할 수 있음
- 래퍼 객체를 생성하고, Object 객체를 프로퍼티, 값으로 추가함

- 일반적으로는 객체를 생성할 때 객체리터럴 방식을 사용함
1
var obj = { }
cs


2) Function 
1
2
3
4
5
6
7
8
9
10
11
12
console.log(typeof(window.Function)) // "function"
 
var foo = new Function('var1''var2''retrun var1+var2')
foo(12// 3
 
function foo(var1, var2){
     return var1 + var2
}
 
var foo = function(var1, var2){
     return var1 + var2
}
cs
- window.Function의 타입은 "function" 이며, new 키워드를 통해 Function 객체를 생성할 수 있음
- 그러나 그렇게 생성안하지... 다른 표현 방식을 사용함
=> 내부적으로는 new를 통해 객체를 생성함

- 자바스크립트의 모든 함수는 Function의 객체

3) Boolean
- window.Boolean은 "function"이며, new 키워드를 통해 Boolean 래퍼(wrapper)객체를 생성할 수 있음
- 기본자료형 boolean을 위한 래퍼(wrapper) 객체
- 기본자료형 boolean과 Boolean 객체는 다름, Boolean 객체는 true/false를 프로퍼티로 포함하는 객체
- 래퍼 객체를 생성하고, 기본자료형 타입인 boolean 변수를 프로퍼티, 값으로 추가함

4) Number, Math, Date, String, Array, Error
- 각 window.~ "function"의 래퍼객체 메서드 프로퍼티에 대해 알아볼 것임
- 포스팅할 것


[참고자료]

1) poiemaweb 표준 빌트인 객체 : http://poiemaweb.com/js-standard-built-in-objects



댓글