JavaScript가 할 수 있는 일
■ 자바스크립트가 할 수 있는 일
JavaScript는 "안전한" 프로그래밍 언어임. JavaScript는 처음에 메모리나 CPU같은 low-level의 접근이 필요로 하지 않는 브라우저를 위해 만들어졌기 때문에 이러한 메모리나 CPU같은 low-level의 접근을 제공하지 않음.
JavaScript의 능력은 이 언어가 동작하는 환경에 따라 차이가 날 수 있음. 예를 들면 Node.js는 JavaScript가 임의의 파일을 읽거나 쓰기, 네트워크의 요청을 수행하는 등의 일을 할 수 있는 매서드를 지원함.
브라우저에서 수행되는 JavaScript는 웹페이지는 조작하거나 사용자나 웹서버와 상호작용 등의 역할을 수행할 수 있음.
따라서 JavaScript가 할 수 있는 일은..
* 페이지에 새로운 HTML을 추가시키거나 기존의 내용을 바꾸거나 스타일을 변경할 수 있음.
* 유저의 행동에 반응하거나 마우스의 클릭이나 마우스가 이동하거나 키보드 키가 눌렸을 때 어떠한 반응을 할 수 있도록함.
* 원격 서버의 네트워크를 통해 특정 요청을 보내거나 파일을 다운로드나 업로드 할 수 있음(AJAX나 COMET 기술이라고 불림)
* 브라우저가 가지고있는 쿠키를 읽거나 저장할 수 있음. 또한 브라우저에서 접속한 유저에게 메세지를 보여주거나 그들의 의견을 물어볼 수 있음.
* 클라이언트 쪽(local storage)에 어떤 데이터를 저장할 수 있도록함
■ 자바스크립트가 할 수 없는 일
브라우저 상의 자바스크립트는 유저의 보안/안정성을 위해 제한될 수 있음. 자바스크립트의 제한 목적은 사용자의 데이터를 해치거나 개인 정보에 접근하려는 악성 웹페이지로부터 막기 위함임.
이러한 제한에는 다음과 같은 예시들이 있음.
* 자바스크립트는 하드디스크에 있는 임의의 파일을 읽거나 쓸수 없으며 이 파일들을 카피하거나 프로그램을 실행 시킬 수 없음. 즉, 자바스크립트는 운영체제(OS) 기능에 직접적으로 접근할 수 없음.
현재의 브라우저들은 자바스크립트가 파일과 상호작용할 수 있도록 되어있는데 이 접근은 오직 사용자가 파일을 프라우저의 윈도우에 끌어다 놓거나 input 태그를 통해서 특정 파일을 선택했을 때로 제한된다.
자바스크립트에서 카메라나 마이크, 다른 장치들과 상호작용할 수 있는 방법은 있지만 이 상호작용은 사용자가 직접적으로 허락할 때만 가능함. 그래서 자바스크립트의 페이지는 몰래 웹 카메라를 켜서 주변을 관찰하고 정보를 빼내 올 수 없음.
* 다른 탭이나 윈도우에서 일반적으로 탭이나 윈도우끼리 존재자체도 모름. 예를들면 가끔 한 윈도우에서 자바스크립트를 다른 윈도우를 열도록 자바스크립트를 사용함. 하지만 한 페이지에 있는 자바스크립트가 다른 도메인이나 다른 프로토콜이나 다른 포트로 부터 온 다른 스크립트에 접근할 수는 없음.
이러한 걸 Same Origin Policy라고 부름. 자바스크립트가 다른 페이지끼리 상호작용하게 되려면 이 페이지가 함께 데이터를 교환하는 코드를 가지고 있어야함.
이 Same Origin Policy는 유저의 안전을 위해서 있음. http://anysite.com의 페이지와 http://gmail.com이 다른 탭에 열려있을 때 어떤 anysite에서 gmail로부터 어떠한 개인 정보를 뺴낼 수 없도록 하기 위함.
■ 자바스크립트가 특별한 이유는?
자바스크립트가 특별한 이유는 다음과 같은 세가지 이유가 있음.
1. HTML과 CSS와 완전히 통합됨.
2. 간단한 것들을 간단하게 끝냄
3. 주요 브라우저에서 지원됨.
자바스크립트는 단순히 브라우저의 기술이 아니라 이러한 이유로 특별한 언어임. 그래서 브라우저 인터페이스를 만드는데 가장 많이 퍼트려져있는 툴임.
[출처 : https://javascript.info/intro ]
'자바스크립트' 카테고리의 다른 글
[JavaScript 공부 -4] JavaScript의 "use strict" (0) | 2019.01.17 |
---|---|
[JavaScript공부 -3] 코드의 구조 (0) | 2019.01.16 |
[JavaScript 공부 - 1] JavaScript란? (0) | 2018.12.26 |
[jQuery] on으로 eventlistener 추가 할 때 인자값 넘기는 방법 (0) | 2018.11.29 |
[JavaScript] Array.from 함수가 IE에서 작동하지 않을 때 (0) | 2018.10.24 |
댓글