먼저 예시를 살펴보겠습니다
function Me(name,age,job){ this.name = name; this.age = age; this.job = job; }
객체를 인스턴스화하는 다음 두 가지 방법의 차이점은 무엇입니까?
var mefun1 = new Me('fei','20','it'); var mefun2 = Me('fei','20','it');
간단히 말하면
첫 번째는 생성자 함수, 즉 new 연산자를 통해 생성자 Function을 호출하여 함수를 생성하는 것입니다
두 번째 방법은 인스턴스화하는 것이 아니라 함수를 호출하고 반환 값을 변수에 할당하는 것입니다.
다시 확장
JavaScript에는 실제 클래스가 없지만 JavaScript에는 생성자와 새 연산자가 있습니다. 생성자는 인스턴스 객체의 속성과 값을 초기화하는 데 사용됩니다. 모든 JavaScript 함수를 생성자로 사용할 수 있으며, 새 인스턴스를 생성하려면 생성자 앞에 new 연산자를 붙여야 합니다.
new 연산자는 함수의 실행 컨텍스트를 변경하고 return 문의 동작도 변경합니다. 실제로 new 및 생성자를 사용하는 것은 클래스를 구현하는 기존 언어와 매우 유사합니다.
// 实例化一个Me var alice = new Me('alice', 18, 'Coder'); // 检查这个实例 assert( alice instanceof Me );
생성자의 이름은 일반적으로 일반 함수와 구별하기 위해 첫 글자를 대문자로 하는 카멜 표기법을 사용합니다.
관용적 사용법.
// 不要这么做! Me('alice', 18, 'Coder'); //=> undefined
new 키워드를 사용하여 생성자를 호출하면 실행 컨텍스트가 전역 개체(창)에서 새로 생성된 인스턴스를 나타내는 빈 컨텍스트로 변경됩니다. 따라서 this 키워드는 현재 생성된 인스턴스를 가리킵니다. 이해하기가 다소 혼란스럽기는 하지만, 다른 언어에서 내장 클래스 메커니즘을 구현하는 경우에도 마찬가지입니다.
기본적으로 생성자가 아무것도 반환하지 않으면 현재 컨텍스트를 반환합니다.
그렇지 않으면 기본이 아닌 유형 값을 반환합니다.
위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.