JavaScript 학습 노트 의 원생 함수

원생 함수 가 뭐 예요?
JavaScript 의 원생 함수 도 내장 함수 라 고 합 니 다.
String (), Number (), Boolean () 등
원생 함 수 는 구조 함수 로 사용 할 수 있다.
그러나 구조 함수 (예 를 들 어 new String ("abc") 를 통 해 만 든 것 은 기본 형식 값 ("abc") 을 패키지 한 대상 입 니 다.
		var abc = new String("abc");
		console.log(typeof abc); //object   string

[[class]]
[class] 는 모든 typeof 반환 값 이 "object" 인 대상 의 내부 속성 (함수 의 typeof 반환 값 은 "function") 입 니 다. 이 속성 은 직접 접근 할 수 없습니다.
그러나 Object. prototype. toString (..) 을 통 해 볼 수 있 으 며 내부 분류 로 볼 수 있 습 니 다.
		Object.prototype.toString.call(abc);//[object String]

대부분의 경우 대상 내부 의 [class] 속성 과 개 선 된 대상 을 만 드 는 내 건 원생 구조 함수 가 대응 합 니 다.
		Object.prototype.toString.call([1, 2, 3]); //[object Array]

하지만 늘 그런 것 은 아니다.
		Object.prototype.toString.call(undefined); //[object Undefined]

undefined 에 Undefined () 와 같은 원생 구조 함수 가 존재 하지 않 는 것 을 볼 수 있 습 니 다. 그러나 [class] 는 여전히 "Undefined" (null 의 [class] 는 "Null") 입 니 다.
다른 기본 유형 은 포장 (boxing) 이 라 고 불 리 는 행위 가 존재 한다.
		Object.prototype.toString.call("123"); //[object String]
		Object.prototype.toString.call(123); //[object Number]
		Object.prototype.toString.call(true); //[object Boolean]

상례 에서 기본 유형 은 각자 의 포장 대상 에 의 해 자동 으로 포장 되 기 때문에 그들의 내부 [Class] 값 은 각각 "String", "Number", "Boolean" 이다.
 
포장 대상 포장
기본 형식 에는. length 와 같은 속성 과. toString () 같은 방법 이 없 기 때 문 입 니 다.
패 키 징 대상 을 통 해 접근 할 수 있 습 니 다. 이 때 자 바스 크 립 트 는 자동 으로 기본 형식 값 패키지 (box 또는 wrap) 의 패 키 징 대상 입 니 다.
		var a = "abc";
		a.length; //3

기본 형식 값 을 자체 적 으로 봉 하려 면 Object (..) 함수 (new 제외) 를 사용 하 십시오.
개봉 하 다
패 키 징 대상 은 하나의 대상 이기 때문에 기본 유형 값 이 무엇 이 든 판단 할 때 돌아 오 는 것 은 하나의 진가 이다.
패 키 징 대상 의 기본 형식 값 이 필요 할 때 value Of (..) 함수 로
		var a = Object("abc");
		console.log(a.valueOf());//abc

봉인 함수 의 기본 형식 값 을 사용 해 야 할 때 은 식 봉인 해제 가 발생 합 니 다
		var a = Object("abc");
		var b = a + "";
		console.log(b, typeof b); //abc string

 
원생 함 수 를 구조 함수 로 하 다.
Array (..) 를 사용 하여 하나의 배열 을 구성 하 는 것 과 하나의 배열 을 직접 설명 하 는 효과 가 같 습 니 다. 만 든 값 은 모두 패 키 징 대상 을 통 해 포장 합 니 다.
Array (..) 구조 함 수 를 사용 할 때 new 를 가 져 오 는 것 과 new 를 가 져 오지 않 는 것 은 같 습 니 다. new 를 가 져 오지 않 을 때 자동 으로 보충 합 니 다.
하나의 숫자 매개 변수 만 가 져 올 때 이 매개 변 수 는 배열 의 요소 가 아 닌 미리 설 정 된 길이 로 사 용 됩 니 다.
한 배열 에 단원 이 없 지만 length 속성 이 표시 되 어 있 으 면 빈 단원 이 나타 납 니 다.
		var a = new Array(3);
		console.log(a); //(3) [empty × 3]

우 리 는 최소한 하나의 빈 단원 을 포함 하 는 배열 을 희소 배열 이 라 고 부른다.
어떤 방법 에 서 는 빈 단원 의 행동 이 undefined 와 유사 하지만, 다른 방법 에 서 는 완전히 다르다.
		var a = new Array(3);
		var b = [undefined, undefined, undefined];
		console.log(a); //(3) [empty × 3]
		console.log(b); //(3) [undefined, undefined, undefined]
		console.log(
			a.join("-"), //--
			b.join("-") //--
		);
		console.log(
			a.map(function(value, index) {
				return index;
			}), //(3) [empty × 3] 
			b.map(function(value, index) {
				return index;
			}) //(3) [0, 1, 2]
		);

join 방법 은 배열 이 비어 있 지 않다 고 가정 한 다음 length 를 통 해 옮 겨 다 니 기 때문이다.
맵 방법 은
빈 단원 에 존재 하 는 여러 가지 문제 때문에, 우 리 는 어떠한 상황 에서 도 빈 단원 을 만 들 고 사용 하 는 것 을 건의 하지 않 는 다
우 리 는 다른 방법 으로 undefined 값 의 배열 을 더욱 안전하게 만 들 수 있 습 니 다.
		var a = Array.apply(null, {
			length: 3
		});
		console.log(a); //(3) [undefined, undefined, undefined]

Array. apply 는 {length: 3} 을 매개 변수 로 Array () 방법 을 호출 합 니 다.
인자 가 들 어 올 때 apply 에 for 순환 이 들 어 오 는 클래스 배열 대상 이 있다 고 가정 합 니 다.
0 부터 length 까지 순환
그러나 들 어 오 는 클래스 배열 대상 에는 [0], [1], [2] 등 속성 이 없 기 때문에 undefined 로 돌아 갑 니 다.
그래서 실제로 실 행 된 것 은 Array (undefined, undefined, undefined) 가 되 었 다.
 
원생 함수 의 원형
원생 구조 함수 에 도 Array. prototype 과 같은. prototype 대상 이 있 습 니 다.
이 대상 들 은 하위 대상 이 특유 한 행위 특징 을 포함 하고 있다.
예 를 들 어 String. prototype. index Of (..)
문서 의 약정 에 따라 이러한 방법 은 일반적으로 String \ # index Of (..) 로 간략하게 쓰 인 다.
 
원생 함수 의 원형 도 좋 은 기본 값 입 니 다.
Array. prototype 과 비슷 해서 한 번 만 들 어 졌 습 니 다.
기본 값 을 [] 로 설정 하면 자원 의 낭 비 를 초래 할 수 있 습 니 다. 사용 할 때마다 한 번 씩 만들어 야 하기 때 문 입 니 다.
그러나 기본 값 이 나중에 바 뀌 면 이런 방법 을 사용 하지 마 세 요.
원형 을 수정 하면 많은 문제 가 생 길 수 있 기 때문이다.

좋은 웹페이지 즐겨찾기