>웹 프론트엔드 >JS 튜토리얼 >'new' 연산자는 JavaScript에서 객체를 생성하고 초기화하기 위해 뒤에서 어떻게 작동합니까?

'new' 연산자는 JavaScript에서 객체를 생성하고 초기화하기 위해 뒤에서 어떻게 작동합니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-29 03:21:02557검색

How does the `new` operator work behind the scenes to create and initialize objects in JavaScript?

JavaScript에서 새 연산자가 객체를 생성하고 초기화하는 방법

new 연산자는 새 객체를 생성하는 데 사용되는 JavaScript의 강력한 키워드입니다. 객체 지향 프로그래밍에서 중요한 역할을 하지만 특히 프로토타입 체인과 관련하여 완전히 이해하기 어려울 수 있습니다.

새 연산자 이해

사용 시 함수가 포함된 새 연산자를 사용하면 다음 단계가 내부적으로 발생합니다.

  1. 새 기본 객체가 생성됩니다.
  2. 객체의 내부 [[Prototype]] 속성이 함수의 프로토타입 속성입니다.
  3. 새로 생성된 객체의 this 값을 사용하여 함수가 호출됩니다.
  4. 함수가 기본 값을 반환하면 내부에서 생성된 객체가 반환됩니다.
  5. 그렇지 않으면 함수가 객체를 반환하면 내부적으로 생성된 객체는 폐기됩니다.

구현 예

new 연산자의 기능을 보여주기 위해, 여기에 동등한 구현이 있습니다:

<code class="javascript">function NEW(f) {
  let obj, ret, proto;

  // Check if `f.prototype` is an object
  proto = f.prototype ? f.prototype : Object.prototype;

  // Create an object inheriting from `proto`
  obj = Object.create(proto);

  // Call the function with `obj` as `this`
  ret = f.apply(obj, Array.prototype.slice.call(arguments, 1));

  // Return the object from the function or the newly created `obj`
  return Object(ret) === ret ? ret : obj;
}</code>

사용 예

이 예를 고려하십시오:

<code class="javascript">function Foo(arg) {
  this.prop = arg;
}
Foo.prototype.inherited = 'baz';

let obj = NEW(Foo, 'bar');
console.log(obj.prop); // Output: "bar"
console.log(obj.inherited); // Output: "baz"
console.log(obj instanceof Foo); // Output: true</code>

이것은 new 연산자가 객체를 생성하는 방법을 보여줍니다. 함수의 프로토타입에서 상속되며 해당 속성과 메서드에 대한 액세스를 허용합니다.

위 내용은 'new' 연산자는 JavaScript에서 객체를 생성하고 초기화하기 위해 뒤에서 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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