>  기사  >  웹 프론트엔드  >  javascript_javascript 기술에서 new를 사용하는 것과 인스턴스화된 객체를 사용하지 않는 것의 차이점

javascript_javascript 기술에서 new를 사용하는 것과 인스턴스화된 객체를 사용하지 않는 것의 차이점

WBOY
WBOY원래의
2016-05-16 15:53:432162검색

먼저 예시를 살펴보겠습니다

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

이 함수는 정의되지 않은 값만 반환하며 실행 컨텍스트는 window(전역) 개체이고 3개의 전역 변수 name, age, job이 실수로 생성되었습니다. 생성자를 호출할 때 new 키워드를 잃지 마세요.

new 키워드를 사용하여 생성자를 호출하면 실행 컨텍스트가 전역 개체(창)에서 새로 생성된 인스턴스를 나타내는 빈 컨텍스트로 변경됩니다. 따라서 this 키워드는 현재 생성된 인스턴스를 가리킵니다. 이해하기가 다소 혼란스럽기는 하지만, 다른 언어에서 내장 클래스 메커니즘을 구현하는 경우에도 마찬가지입니다.

기본적으로 생성자가 아무것도 반환하지 않으면 현재 컨텍스트를 반환합니다.

그렇지 않으면 기본이 아닌 유형 값을 반환합니다.

위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.