new_javascript 팁 없이 JavaScript에서 생성자를 사용하여 객체를 생성하는 방법에 대한 설명
May 16, 2016 pm 05:55 PM
new
객체 생성
다음과 같습니다
코드 복사 코드는 다음과 같습니다.
함수 사람(이름, 나이) {
this.name = 이름;
this.age = 나이
}
var p = new Person('lily', 20)
Discover Something 라이브러리 코드가 new를 사용하지 않고 일반 객체를 생성하는 방법은 이상합니다. 다음과 같습니다this.name = 이름;
this.age = 나이
}
var p = new Person('lily', 20)
코드 복사코드는 다음과 같습니다.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를 전혀 작성하지 마세요. 이렇게 하면 코드 양이 절약됩니다. 다른 유형에도 마찬가지인가요? 문자열/숫자/부울을 사용해 보세요. reg2.test('he'); .log( typeof reg1); // object
console.log(typeof reg2); // object
아주 좋습니다. 코드가 정상적으로 실행됩니다.
코드 복사 코드는 다음과 같습니다.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 연산자를 사용하지 않고 객체를 생성할 수 있습니까? 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가 적용되지 않는 경우 다른 유형을 각각 문자열, 숫자, 부울 유형으로 변환할 수 있습니다.
코드 복사
코드는 다음과 같습니다.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으로 문의하세요.

인기 기사
스플릿 소설을이기는 데 얼마나 걸립니까?
3 몇 주 전
By DDD
Repo : 팀원을 부활시키는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
헬로 키티 아일랜드 어드벤처 : 거대한 씨앗을 얻는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌

인기 기사
스플릿 소설을이기는 데 얼마나 걸립니까?
3 몇 주 전
By DDD
Repo : 팀원을 부활시키는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
헬로 키티 아일랜드 어드벤처 : 거대한 씨앗을 얻는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
7280
9


자바 튜토리얼
1622
14


Cakephp 튜토리얼
1340
46


라라벨 튜토리얼
1257
25


PHP 튜토리얼
1205
29



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

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

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

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