> 웹 프론트엔드 > JS 튜토리얼 > new_javascript 팁 없이 JavaScript에서 생성자를 사용하여 객체를 생성하는 방법에 대한 설명

new_javascript 팁 없이 JavaScript에서 생성자를 사용하여 객체를 생성하는 방법에 대한 설명

WBOY
풀어 주다: 2016-05-16 17:55:46
원래의
1057명이 탐색했습니다.

다음과 같습니다

코드 복사 코드는 다음과 같습니다.
함수 사람(이름, 나이) {
this.name = 이름;
this.age = 나이
}
var p = new Person('lily', 20)
Discover Something 라이브러리 코드가 new를 사용하지 않고 일반 객체를 생성하는 방법은 이상합니다. 다음과 같습니다


코드 복사코드는 다음과 같습니다.var reg = RegExp('^he$' );
테스트 결과 new 사용 여부에 관계없이 최종 반환된 객체는 일반 객체이고 유형은 모두 "객체"인 것으로 나타났습니다.


코드 복사 코드는 다음과 같습니다. var reg1 = new RegExp('^he$') ;
var reg2 = RegExp('^he$');
reg1.test('he'); // true
reg2.test('he'); .log( typeof reg1); // object
console.log(typeof reg2); // object



아주 좋습니다. 코드가 정상적으로 실행됩니다.
이런 경우에는 new를 전혀 작성하지 마세요. 이렇게 하면 코드 양이 절약됩니다. 다른 유형에도 마찬가지인가요? 문자열/숫자/부울을 사용해 보세요.



코드 복사 코드는 다음과 같습니다.var str1 = new String(1); var str2 = String(1); var num1 = new Number('1');
var num2 = Number('1')
var boo1 = new Boolean(1); var boo2 = Boolean(1);
console.log(typeof str1); // object
console.log(typeof str2); // string
console.log(typeof num1);
console.log(typeof num2); // 숫자
console.log(typeof boo1); // 객체
console.log(typeof boo2); // 부울

>
보시다시피 일반 케이스와는 다릅니다. 일반적으로 새로운 것인지 아닌지에 관계없이 typeof 뒤에는 object가 옵니다.
그러나 문자열/숫자/부울 유형의 경우 새 객체 유형은 "object"를 반환하고 새 유형이 아닌 유형은 "string"을 반환합니다.
즉, new가 적용되지 않는 경우 다른 유형을 각각 문자열, 숫자, 부울 유형으로 변환할 수 있습니다.
자, 이 장의 시작 부분에 있는 Person 클래스로 돌아가 보겠습니다. 즉, 우리가 직접 작성한 클래스가 new 연산자를 사용하지 않고 객체를 생성할 수 있습니까?




코드 복사

코드는 다음과 같습니다.function Person(이름,나이) { this .name = 이름; this.age = age; } var p = Person('lily', 20)
console.log(p); 🎜>

은 정의되지 않은 값을 반환하며 이는 분명히 불가능합니다. 따라서 new를 사용하지 않고 Person 인스턴스를 생성하는 것은 환상적입니다.
실현해야 한다면? 실제로는 다음과 같이 작동합니다.



코드를 복사하세요


코드는 다음과 같습니다.
function Person( 이름, 나이) { this.name = 이름; this.age = 나이 if (this===window) { return new Person(이름, 나이); } } var p = Person('lily', 20); // object


는 Person 클래스를 약간 수정했습니다. 실제로 Person이 생성자로 실행되는지 함수로 실행되는지는 내부적으로 구별됩니다.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿