>  기사  >  웹 프론트엔드  >  Node.js는 _new 함수와 new 키워드를 구현하는 방법(코드 테스트 포함)을 캡슐화합니다.

Node.js는 _new 함수와 new 키워드를 구현하는 방법(코드 테스트 포함)을 캡슐화합니다.

不言
不言원래의
2018-08-13 10:30:092309검색

이 글의 내용은 _new 함수의 js 캡슐화와 새로운 키워드를 구현하는 방법(코드 테스트 포함)에 대한 내용이며, 필요한 친구들이 참고할 수 있기를 바랍니다. 당신을 도와줍니다.

1. 머리말

우리 모두 알고 있듯이 객체가 없으면 어떻게 해야 하나요? 그런 다음 새 것을 얻으십시오!

그럼 JS에서 새 객체를 생성할 때 new 키워드는 내부에서 어떤 역할을 할까요?
이제 네이티브 JS에서 새 키워드의 내부 작동 원리를 분석해 보겠습니다.

2. 원본 신규

먼저 새로운 개체를 살펴보겠습니다.

#🎜🎜 #

//创建Person构造函数,参数为name,age
function Person(name,age){
  this.name = name;
  this.age = age;
 }
//实例化对象小明
xm = new Person('xiaoming',18);
//打印实例化出来的对象小明
console.log(xm);

인쇄 결과:




인쇄 결과에서 다음을 참조하세요:

new 키워드를 사용하여 개체를 인스턴스화할 때 빈 개체 xm이 먼저 생성되고 이 빈 개체에는 생성자의 두 속성에 각각 해당하는 두 개의 속성 name과 age가 포함됩니다. 둘째, 인스턴스화된 객체 xm이 Person.prototype에서 상속된다는 것도 알 수 있으므로 이제 객체를 인스턴스화할 때 new 키워드가 내부적으로 수행하는 작업을 요약할 수 있습니다. 실제로 new 키워드는 내부적으로 다음 세 가지 작업을 수행합니다. 알려진 생성자는 Func입니다.):

  1. 빈 개체를 만들고 빈 개체가 Func.prototype을 상속하도록 만듭니다.

  2. #🎜 🎜#생성자를 실행하고 이것을 방금 생성된 새 객체로 지정합니다.
  3. 새 객체를 반환합니다.
  4. #🎜 🎜#
  5. 3. _new 함수 캡슐화

new 키워드의 내부 원리를 알면 _new 함수를 캡슐화할 수 있으며, 이를 new와 동일한 기능에 사용합니다. 예어.

_new 함수는 다음 매개변수를 전달해야 합니다.

첫 번째 매개변수: 생성자 함수 이름 Func

두 번째 매개변수 및 후속 매개변수: 생성자의 매개변수# 🎜🎜#


function _new(){
  //1.拿到传入的参数中的第一个参数,即构造函数名Func
  var Func = [].shift.call(arguments);
  //2.创建一个空对象obj,并让其继承Func.prototype
  var obj = Object.create(Func.prototype);
  //3.执行构造函数,并将this指向创建的空对象obj
  Func.apply(obj,arguments)
  //4.返回创建的对象obj
  return obj
}

4. Test_new function

캡슐화한 후, 캡슐화된 _new 함수를 테스트해 보겠습니다. 기본 new 키워드와 동일한 기능을 구현하는지 확인하세요.

//创建Person构造函数,参数为name,age
function Person(name,age){
  this.name = name;
  this.age = age;
}

function _new(){
  //1.拿到传入的参数中的第一个参数,即构造函数名Func
  var Func = [].shift.call(arguments);
  //2.创建一个空对象obj,并让其继承Func.prototype
  var obj = Object.create(Func.prototype);
  //3.执行构造函数,并将this指向创建的空对象obj
  Func.apply(obj,arguments)
  //4.返回创建的对象obj
  return obj
}

xm = _new(Person,'xiaoming',18);

console.log(xm);

테스트 결과:

#🎜 🎜#테스트 결과를 보면 _new 함수의 기능이 new 키워드와 완전히 일치하는 것을 알 수 있습니다.

관련 추천:

js의 상속 방법은 무엇인가요? js에서 상속을 구현하는 여러 가지 방법 소개

js를 사용하여 작은 그림을 클릭하여 큰 그림을 표시하는 효과를 얻는 방법은 무엇인가요? (코드예시)

js의 얕은 복사와 깊은 복사의 간략한 소개와 구현 방법

위 내용은 Node.js는 _new 함수와 new 키워드를 구현하는 방법(코드 테스트 포함)을 캡슐화합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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