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

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

May 16, 2016 pm 05:55 PM
new 객체 생성

다음과 같습니다

코드 복사 코드는 다음과 같습니다.
함수 사람(이름, 나이) {
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이 생성자로 실행되는지 함수로 실행되는지는 내부적으로 구별됩니다.
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

ActiveX 컴포넌트가 객체를 생성할 수 없는 문제를 해결하는 방법 ActiveX 컴포넌트가 객체를 생성할 수 없는 문제를 해결하는 방법 Jan 24, 2024 pm 02:48 PM

ActiveX 컴포넌트가 객체를 생성할 수 없는 문제를 해결하는 방법

Java 리플렉션 메커니즘을 사용하여 객체를 생성하는 방법은 무엇입니까? Java 리플렉션 메커니즘을 사용하여 객체를 생성하는 방법은 무엇입니까? Apr 15, 2024 pm 04:18 PM

Java 리플렉션 메커니즘을 사용하여 객체를 생성하는 방법은 무엇입니까?

Java에서 new 키워드를 사용하는 방법 Java에서 new 키워드를 사용하는 방법 May 03, 2023 pm 10:16 PM

Java에서 new 키워드를 사용하는 방법

Go 언어로 클래스와 객체를 생성하고 초기화하는 방법 Go 언어로 클래스와 객체를 생성하고 초기화하는 방법 Jul 21, 2023 pm 07:00 PM

Go 언어로 클래스와 객체를 생성하고 초기화하는 방법

Oukitel은 저렴한 가격으로 새로운 C50, 견고한 WP39 및 WP50 스마트폰을 출시합니다. Oukitel은 저렴한 가격으로 새로운 C50, 견고한 WP39 및 WP50 스마트폰을 출시합니다. Jun 21, 2024 am 07:10 AM

Oukitel은 저렴한 가격으로 새로운 C50, 견고한 WP39 및 WP50 스마트폰을 출시합니다.

new 연산자는 js에서 어떻게 작동하나요? new 연산자는 js에서 어떻게 작동하나요? Feb 19, 2024 am 11:17 AM

new 연산자는 js에서 어떻게 작동하나요?

Go 언어에서 make와 new의 차이점은 무엇입니까 Go 언어에서 make와 new의 차이점은 무엇입니까 Jan 09, 2023 am 11:44 AM

Go 언어에서 make와 new의 차이점은 무엇입니까

new 키워드 대신 Java에서 clone() 메소드를 사용하는 방법은 무엇입니까? new 키워드 대신 Java에서 clone() 메소드를 사용하는 방법은 무엇입니까? Apr 22, 2023 pm 07:55 PM

new 키워드 대신 Java에서 clone() 메소드를 사용하는 방법은 무엇입니까?

See all articles