>  기사  >  웹 프론트엔드  >  JavaScript 생성자를 사용하는 방법은 무엇입니까?

JavaScript 생성자를 사용하는 방법은 무엇입니까?

PHP中文网
PHP中文网원래의
2017-06-28 11:48:001692검색

생성자는 인스턴스 객체를 초기화하는 것이고, 객체의 프로토타입 속성은 인스턴스 객체를 상속하는 것입니다. 이번 글에서는 자바스크립트 생성자에 대해 자세히 설명하겠습니다. JS 생성자에 대한 지식에 관심이 있는 친구들은 함께 배워보세요. 생성자는 인스턴스 객체를 초기화하는 것이고, 객체의 프로토타입 속성은 인스턴스 객체를 상속하는 것입니다. .

생성자 참고사항:

1. 기본 함수의 첫 글자는 대문자입니다

2. 생성자는 아무것도 반환하지 않습니다. new 연산자는 자동으로 지정된 유형을 생성하고 반환합니다. 생성자가 호출되면 new는 자동으로 this 객체를 생성하며 유형은 생성자 유형입니다.

3. 생성자에서 명시적으로 return을 호출할 수도 있습니다. 반환된 값이 객체인 경우 새로 생성된 객체 인스턴스 대신 반환됩니다. 반환된 값이 기본 유형인 경우 무시되고 새로 생성된 인스턴스가 반환됩니다.​​

 function Person( name){
        this.name =name;
      }
       var p1=new Person('John');

   function person(name ){
        Object obj =new Object();
        obj.name =name;
         return obj;
      }
       var p1= person("John");

4와 동일합니다. 생성자도 함수이므로 직접 호출할 수 있지만 반환 값은 현재 정의되지 않습니다. 생성자는 전역 this 개체와 같습니다. this.name은 실제로 전역 변수 이름을 생성합니다. 엄격 모드에서는 new를 통해 Person 생성자를 호출하면 오류가 발생합니다.

5 생성자에서 Object.defineProperty() 메소드를 사용하여 초기화할 수도 있습니다.

  function Person( name){
        Object.defineProperty(this, "name"{
          get :function(){
             return name;
          },
           set:function (newName){
            name =newName;
          },
          enumerable :true, //可枚举,默认为false
           configurable:true //可配置
         });
      }  
       var p1=new Person('John');

6 생성자에서 프로토타입 객체를 사용하세요.

 //比直接在构造函数中写的效率要高的多
       Person.prototype.sayName= function(){
         console.log(this.name);
      };

비교 더 많은 것이 있으면 대부분의 사람들은 더 간단한 방법을 채택할 것입니다. 다음과 같이 객체 리터럴을 직접 사용하여 프로토타입 객체를 대체합니다. ​​​

 Person.prototype ={
        sayName :function(){
           console.log(this.name);
        },
        toString :function(){
           return "[Person "+ this.name+"]" ;
        }
      };

이 방법은 입력할 필요가 없기 때문에 매우 인기가 있습니다. Person.prototype을 여러 번 시도했지만 주의해야 할 부작용이 있습니다.

프로토타입 객체를 리터럴 형식으로 다시 작성하면 생성자의 속성이 변경되므로 Person 대신 Object를 가리킵니다. 이는 프로토타입 객체에 다른 객체 인스턴스에는 없는 생성자 속성이 있기 때문입니다. 함수가 생성되면 해당 프로토타입 속성도 생성되고 프로토타입 객체의 생성자 속성은 함수를 가리킵니다. 객체 리터럴 형식을 사용하여 프로토타입 객체를 다시 작성하면 생성자 속성이 일반 객체 Object로 설정됩니다. 이를 방지하려면 프로토타입 객체를 다시 작성할 때 다음과 같이 생성자를 수동으로 재설정해야 합니다.

 Person.prototype ={
        constructor :Person,
        
        sayName :function(){
           console.log(this.name);
        },        
        toString :function(){
           return "[Person "+ this.name+"]" ;
        }
      };

다시 테스트:

p1.constructor===Person


true

p1.constructor===Object

false

p1 인스턴스of Person

true

위 내용은 JavaScript 생성자를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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