JavaScript 학습 노트 의 원생 함수
4403 단어 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 과 비슷 해서 한 번 만 들 어 졌 습 니 다.
기본 값 을 [] 로 설정 하면 자원 의 낭 비 를 초래 할 수 있 습 니 다. 사용 할 때마다 한 번 씩 만들어 야 하기 때 문 입 니 다.
그러나 기본 값 이 나중에 바 뀌 면 이런 방법 을 사용 하지 마 세 요.
원형 을 수정 하면 많은 문제 가 생 길 수 있 기 때문이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.