[먼저 봐야하는 게시글]
- 빌트인객체(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(1, 2) // 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
'javascript' 카테고리의 다른 글
[웹기본개념] 마크업, 마크다운, DOM 생성 (0) | 2017.04.29 |
---|---|
[웹기본개념] REST 친숙해지기 (0) | 2017.04.28 |
[자바스크립트] 빌트인객체(1) - 브라우저와 웹페이지를 위한 객체 (0) | 2017.04.25 |
[자바스크립트] Ajax 통신 (0) | 2017.04.22 |
[자바스크립트] js엔진은 어떻게 동시처리를 하는가? 이벤트루프 (0) | 2017.04.21 |
댓글