JavaScript에서 새로운 연산자의 내부 작동 원리 이해하기
프로토타입 체인과 유사하게 오해된 JavaScript의 지형이 근본적인 쿼리를 드러냅니다. : "new" 연산자는 객체 생성을 어떻게 조정하고 객체의 계보와 핵심 속성을 정의합니까?
new의 본질
이 수수께끼를 풀려면 대체 그림을 고려하십시오. :
function NEW(f) { var obj, ret, proto; // Examine `f.prototype` proto = Object(f.prototype) === f.prototype ? f.prototype : Object.prototype; // Inherit from `proto` obj = Object.create(proto); // Invoke `f` with `obj` as `this` ret = f.apply(obj, Array.prototype.slice.call(arguments, 1)); // Determine return type if (Object(ret) === ret) { // Object returned? return ret; } // Otherwise, return inherited object return obj; }
메커니즘 이해
새 연산자는 다음과 같은 내부 [[Construct]] 메커니즘을 사용합니다.
실용 응용
이 개념의 힘을 보여줍니다:
function Foo(arg) { this.prop = arg; } Foo.prototype.inherited = 'baz'; var obj = NEW(Foo, 'bar');
이것은 "상속된" 상속 속성과 "bar" 값을 가진 "prop" 속성을 사용하여 Foo에서 상속하는 객체를 생성합니다.
위 내용은 JavaScript의 'new' 연산자는 어떻게 객체를 생성하고 상속을 설정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!