>  기사  >  웹 프론트엔드  >  JavaScript 유형 시스템 창 객체 연구 노트_javascript 기술

JavaScript 유형 시스템 창 객체 연구 노트_javascript 기술

WBOY
WBOY원래의
2016-05-16 15:21:151292검색

창 개체는 웹 브라우저에서 JavaScript의 궁극적인 상향식 개체이며 범위의 끝 부분에 있으며 모든 개체를 포함하는 개체입니다. 전역 범위에 정의된 모든 속성과 함수는 창 개체의 속성입니다

var myStringVar = 'myString';
var myFunctionVar = function(){};
console.log('myStringVar' in window);//true
console.log('myFunctionVar' in window);//true

1. 인용문

일반적으로 창 개체를 참조하는 방법에는 두 가지가 있습니다. 첫 번째는 단순히 창 개체에 지정된 이름을 참조하는 것입니다. 두 번째는 전역 범위에서 this 키워드를 사용하는 것입니다.

var foo ='bar';
windowRef1 = window;
windowRef2 = this;
console.log(windowRef1,windowRef2);//输出window对象的引用
console.log(windowRef1.foo,windowRef2.foo);//'bar' 'bar' 

2. 특징

창 개체는 암시적이며 일반적으로 명시적으로 참조되지 않습니다. 창 개체가 명시적으로 선언되더라도 창 개체는 범위 체인의 마지막 개체이기 때문에 암시적입니다.

//window.alert()和alert()语句基本上是相同的
var foo = {//window对象在这里是隐式的,window.foo
 fooMethod: function(){
  alert('foo' + 'bar');//window对象在这里是隐式的,window.alert
  window.alert('foo' + 'bar');//显式调用window对象,效果一样
 }
}
foo.fooMethod();//window对象在这里是隐式的,window.foo.fooMethod()


3.속성
창 객체에는 총 18개의 속성이 있습니다

undefined NaN Infinity 
Boolean String Number Object Array Function Date RegExp 
Error EvalError RangeError ReferenceError SyntaxError TypeError URIError 

[참고] undefine, NaN, Infinity에 값을 할당하는 것은 금지됩니다

4. 방법

Javascript에는 창 개체의 메서드로 간주되는 일부 사전 정의된 함수가 포함되어 있습니다

1) 인코딩 방식

encodeURI():전체 URI를 인코딩하고 모든 잘못된 문자를 특수 UTF-8로 바꿉니다.

encodeURI()에는 82개의 인코딩되지 않은 문자가 있습니다.

! # $ & ' ( ) * , - . / : = ? @ _ ~ 9 a-z
encodeURIComponent():URI의 특정 섹션(일반적으로 GET 메소드에서 매개변수를 전달하는 데 사용됨)을 인코딩하여 유효하지 않은 모든 문자를 특수 UTF-8로 바꿉니다.

실제로는 기본 URI를 인코딩하는 것보다 문자열 매개변수를 쿼리하는 것이 더 일반적이므로 일반적으로 encodeURI()보다 encodeURIComponent()를 더 많이 사용합니다. encodeURIComponent()에는 71개의 인코딩되지 않은 문자가 있습니다.

!' ( ) * - . _ ~ 0-9 a-z A-Z
escape():문자열을 인코딩하고 문자의 유니코드 인코딩을 16진수 시퀀스로 변환

ES3에서는 escape() 사용이 반대되며 대신 encodeURI 및 encodeURIComponent를 사용하는 것이 좋습니다. 경로에 자주 사용됩니다. "/" 모양은 인코딩되지 않습니다. escape()에는 인코딩되지 않은 69개의 문자가 있습니다.

* - . / @ _ 0-9 a-z A-Z
decodeURI():디코드 encodeURI()

decodeURIComponent():디코드 encodeURIComponent()

unescape():디코드 escape()

var uri = "http://www.wrox.com/illegal value.htm#start";
console.log(encodeURI(uri));//http://www.wrox.com/illegal%20value.htm#start
console.log(encodeURIComponent(uri));//http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start
console.log(escape(uri));//http%3A//www.wrox.com/illegal%20value.htm%23start
var uri = 'http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start';
console.log(decodeURI(uri));//http%3A%2F%2Fwww.wrox.com%2Fillegal value.htm%23start
console.log(decodeURIComponent(uri));//http://www.wrox.com/illegal value.htm#start
console.log(unescape(uri));//http://www.wrox.com/illegal value.htm#start

평가()

eval() 메서드는 완전한 ECMAScript 파서와 유사하며 실행할 JavaScript 문자열이라는 하나의 매개변수만 허용합니다. 파서는 코드에서 eval() 메서드가 호출된 것을 발견하면 들어오는 매개 변수를 실제 ECMAScript 문으로 구문 분석한 다음 실행 결과를 원래 위치에 삽입합니다. 문자열을 해석하는 eval() 메서드의 기능은 매우 강력하지만 매우 위험합니다. 사용자 입력 데이터를 수행하는 데 사용되면 악의적인 사용자가 사이트나 애플리케이션 문자를 위협하는 코드를 입력할 수 있는데, 이를 코드 삽입이라고 합니다

[참고] 엄격 모드에서는 eval()에서 생성된 모든 변수나 함수에 외부에서 접근할 수 없으며, eval에 값을 할당해도 오류가 발생합니다

2) 디지털 방식

Window 객체에는 isFinite(), isNaN(),parseFloat(),parseInt()의 네 가지 디지털 메소드가 있습니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.