>웹 프론트엔드 >JS 튜토리얼 >JavaScript의 생성자에 대한 심층 분석

JavaScript의 생성자에 대한 심층 분석

PHPz
PHPz원래의
2016-05-16 15:04:551825검색

생성자 속성은 이 객체를 생성한 배열 함수에 대한 참조를 반환합니다. 이 기사에서는 JavaScript의 생성자를 소개합니다. 필요한 친구는 이를 참조할 수 있습니다.

정의 및 사용법

생성자 속성은 이 객체를 생성한 배열 함수에 대한 참조를 반환합니다.

구문

object.constructor

생성자, 생성자, 우리 모두 이 이름에 익숙합니다. 생성자는 항상 포인터입니다. 현재 객체를 생성한 생성자에 연결됩니다.

여기서 한 가지 주목할 점은 각 함수에는 프로토타입 속성이 있는데, 이 프로토타입의 생성자가 이 함수를 가리키는데, 이때 이 함수의 프로토타입을 수정하던 중 사고가 발생했습니다. . 예를 들어

function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.getAge = function(){
return this.age;
}
Person.prototype.getName = function(){
return this.name;
}
var p = new Person("Nicholas",18);
console.log(p.constructor); //Person(name, age)
console.log(p.getAge()); //18
console.log(p.getName()); //Nicholas

그러나 이 경우에는

function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype = {
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
}
var p = new Person("Nicholas",18);
console.log(p.constructor); //Object()
console.log(p.getAge()); //18
console.log(p.getName()); //Nicholas

결과적으로 생성자가 변경되었습니다. .

그 이유는 프로토타입 자체도 객체이기 때문입니다. 생성자는 항상 다음을 가리키므로 위 코드는

Person.prototype = new Object({
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
});

과 동일합니다. 현재 객체를 생성하는 생성자라면 위 코드에서 p.constructor의 출력이 Object라는 것을 이해하는 것은 어렵지 않습니다.

프로토타입을 수정한 후에도 생성자가 여전히 Person을 가리키도록 하려면 어떻게 해야 하나요? 간단합니다. Person.prototype.constructor에 직접 값을 할당하면 됩니다.

Person.prototype = {
constructor:Person,
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
}

위는 편집기에서 소개한 JavaScript의 생성자입니다. 더 많은 관련 튜토리얼을 보려면 을 방문하세요. 자바스크립트 동영상 튜토리얼!

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

관련 기사

더보기