>  기사  >  웹 프론트엔드  >  JavaScript 객체의 세 가지 유형은 무엇입니까?

JavaScript 객체의 세 가지 유형은 무엇입니까?

青灯夜游
青灯夜游원래의
2021-11-24 18:17:025861검색

JavaScript의 세 가지 개체 유형: 1. 사용하기 위해 인스턴스화해야 하는 로컬 개체와 인스턴스화 없이 사용할 수 있는 내장 개체를 포함한 내부 개체 2. 실행하는 환경에서 제공하는 개체인 호스트 개체 3. 사용자 정의 개체는 개발자가 직접 정의한 개체입니다.

JavaScript 객체의 세 가지 유형은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

JavaScript의 개체는 내부 개체(로컬 개체 및 내장 개체), 호스트 개체 및 사용자 지정 개체의 세 가지 주요 범주로 나눌 수 있습니다.

1, 내부 객체

1), 로컬 객체, 사용하기 전에 인스턴스화(신규)해야 하는 ECMAScript에서 제공하는 객체:

Object, Function, Array, String, Boolean, Number , Date, RegExp , Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError

2), 내장 객체, 인스턴스화 없이 사용할 수 있는 ECMAScript에서 제공하는 객체:

Global(전역 객체) 및 Math만

수학 개체 속성

속성 설명
E 자연 로그(대략 2.718과 동일)의 밑인 산술 상수 e를 반환합니다.
LN2 2의 자연 로그를 반환합니다(대략 0.693과 동일).
LN10 10의 자연 로그를 반환합니다(대략 2.302와 동일).
LOG2E e의 밑이 2인 로그(약 1.4426950408889634)를 반환합니다.
LOG10E e의 밑이 10인 로그를 반환합니다(대략 0.434와 동일).
PI pi를 반환합니다(대략 3.14159와 동일).
SQRT1_2 2의 제곱근의 역수를 반환합니다(대략 0.707과 동일).
SQRT2 2의 제곱근(약 1.414)을 반환합니다.

Math 객체 메서드

Method Description
abs(x) x의 절대값을 반환합니다.
acos(x) x의 아크코사인을 반환합니다.
asin(x) x의 아크사인을 반환합니다.
atan(x) x의 아크탄젠트를 -PI/2와 PI/2 라디안 사이의 값으로 반환합니다.
atan2(y,x) x축에서 점 (x,y)까지의 각도를 반환합니다(-PI/2와 PI/2 라디안 사이).
ceil(x) 로그를 반올림합니다.
cos(x) 은 숫자의 코사인을 반환합니다.
exp(x) Ex의 지수를 반환합니다.
floor(x) x를 내림합니다.
log(x) 숫자(밑 e)의 자연 로그를 반환합니다.
max(x,y,z,...,n) x,y,z,...,n 중에서 가장 높은 값을 반환합니다.
min(x,y,z,...,n) x,y,z,...,n 중에서 가장 낮은 값을 반환합니다.
pow(x,y) x의 y제곱을 반환합니다.
random() 0~1 사이의 난수를 반환합니다.
round(x) 반올림.
sin(x) 숫자의 사인을 반환합니다.
sqrt(x) 숫자의 제곱근을 반환합니다.
tan(x) 각도의 탄젠트를 반환합니다.

JavaScript 전역 속성

Property Description
Infinity 은 양의 무한대 값을 나타냅니다.
NaN 은 값이 숫자 값인지 여부를 나타냅니다.
undefine 은 정의되지 않은 값을 나타냅니다.

JavaScript 전역 함수

함수 설명
decodeURI() 인코딩된 URI를 디코딩합니다.
decodeURIComponent() 인코딩된 URI 구성 요소를 디코딩합니다.
encodeURI() 문자열을 URI로 인코딩합니다.
encodeURIComponent() 문자열을 URI 구성 요소로 인코딩합니다.
escape() 문자열을 인코딩합니다.
eval() JavaScript 문자열을 계산하고 이를 스크립트 코드로 실행합니다.
isFinite() 값이 유한수인지 확인합니다.
isNaN() 값이 숫자인지 확인합니다.
Number() 객체의 값을 숫자로 변환합니다.
parseFloat() 문자열을 구문 분석하고 부동소수점을 반환합니다.
parseInt() 문자열을 구문 분석하고 정수를 반환합니다.
String() 객체의 값을 문자열로 변환합니다.
unescape() escape()로 인코딩된 문자열을 디코딩합니다.

2. 호스트 객체

호스트 객체는 JS 스크립트를 실행하는 환경에서 제공하는 객체이며, 브라우저에서 제공하는 객체입니다. 모든 BOM 및 DOM은 호스트 개체입니다.

3. 사용자 정의 객체

개발자가 직접 정의한 객체

⑴객체 리터럴 방식(JSON을 통해 객체 생성)

단점: 동일한 인터페이스를 사용하여 많은 객체를 생성하면 중복 코드가 많이 생성됩니다.

⑵공장 모드.

①팩토리 패턴은 객체를 생성하는 구문을 함수에 넣고, 매개변수를 전달하여 특정 객체를 생성하고, 최종적으로 생성된 객체를 반환하는 패턴입니다.

createPerson() 함수는 수신된 매개변수를 기반으로 필요한 모든 정보를 포함하는 Person 개체를 구성할 수 있습니다.

이 함수는 셀 수 없이 호출될 수 있으며, 매번 호출할 때마다 2개의 속성과 메서드가 포함된 개체를 반환합니다.

② 단점: 팩토리 패턴은 유사한 객체를 여러 개 만들 수 있지만 객체 식별 문제, 즉 객체의 유형을 아는 방법을 해결할 수 없습니다.

⑶ 생성자 패턴

① 단점: 생성자를 사용할 때의 주요 문제점은 각 인스턴스마다 각 메소드를 생성해야 한다는 것입니다.

②ECMAScript에서는 함수가 객체이므로 함수가 정의될 ​​때마다 객체가 인스턴스화됩니다.

3 즉, 생성자를 통해 인스턴스화된 여러 개체의 메서드는 여러 가지 다른 메서드이지만 내부 코드와 구현된 기능은 동일하므로 리소스 낭비가 발생합니다.

⑷프로토타입 패턴

①js에서 각 함수에는 프로토타입 객체라고 하는 객체를 가리키는 포인터인 프로토타입 속성이 있습니다.

②프로토타입 패턴을 사용하면 모든 인스턴스가 프로토타입 객체의 속성과 메서드를 공유할 수 있습니다. 즉, 생성자에서 객체 인스턴스의 정보를 정의할 필요가 없습니다.

3단점: 초기화 매개변수를 생성자에 전달하는 링크가 생략되므로 모든 인스턴스는 기본적으로 동일한 속성 값을 얻습니다.

프로토타입 패턴의 가장 큰 문제는 공유 특성에서 발생합니다. 프로토타입의 모든 속성은 여러 인스턴스에서 공유됩니다

이런 종류의 공유는 기능에 매우 적합합니다. 참조 유형을 포함하는 속성의 경우 문제가 더욱 두드러집니다.

IV 그러므로 프로토타입 모드는 단독으로 사용되는 경우가 거의 없습니다.

⑸생성자 패턴과 프로토타입 패턴의 결합

①생성자 패턴과 프로토타입 패턴의 결합은 사용자 정의 유형을 만드는 가장 일반적인 방법입니다.

②생성자 패턴은 인스턴스 속성을 정의하는 데 사용되며 프로토타입 패턴은 메서드 및 공유 속성을 정의하는 데 사용됩니다.

3 결과적으로 각 인스턴스는 자체 인스턴스 속성 복사본을 갖게 되지만 동시에 메서드에 대한 참조를 공유하여 메모리를 최대한 절약합니다.

⑹기타 모드

①동적 프로토타입 모드: 생성자가 처음 호출될 때만 프로토타입 객체의 해당 속성에 메서드가 할당됩니다. 다른 예제는 생성자 모드

②기생 생성자와 동일한 방식으로 처리됩니다. 모드: 객체를 생성하는 코드만 캡슐화한 다음 새로 생성된 객체를 반환합니다. 계속해서 new 연산자를 사용하여 호출합니다.

3물론 생성자 모드: 공용 속성이 없고 전용 변수 및 메서드만 처리할 일부 get/set 메서드 개인 변수 .

【관련 권장 사항: javascript 학습 튜토리얼

위 내용은 JavaScript 객체의 세 가지 유형은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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