생성자는 인스턴스 객체를 초기화하는 것이고, 객체의 프로토타입 속성은 인스턴스 객체를 상속하는 것입니다. 이번 글에서는 자바스크립트 생성자에 대해 자세히 설명하겠습니다. 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");
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');
//比直接在构造函数中写的效率要高的多 Person.prototype.sayName= function(){ console.log(this.name); };
Person.prototype ={ sayName :function(){ console.log(this.name); }, toString :function(){ return "[Person "+ this.name+"]" ; } };
프로토타입 객체를 리터럴 형식으로 다시 작성하면 생성자의 속성이 변경되므로 Person 대신 Object를 가리킵니다. 이는 프로토타입 객체에 다른 객체 인스턴스에는 없는 생성자 속성이 있기 때문입니다. 함수가 생성되면 해당 프로토타입 속성도 생성되고 프로토타입 객체의 생성자 속성은 함수를 가리킵니다. 객체 리터럴 형식을 사용하여 프로토타입 객체를 다시 작성하면 생성자 속성이 일반 객체 Object로 설정됩니다. 이를 방지하려면 프로토타입 객체를 다시 작성할 때 다음과 같이 생성자를 수동으로 재설정해야 합니다.
Person.prototype ={ constructor :Person, sayName :function(){ console.log(this.name); }, toString :function(){ return "[Person "+ this.name+"]" ; } };
다시 테스트:
p1.constructor===Object
false
p1 인스턴스of Person
true
위 내용은 JavaScript 생성자를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!