생성자, 생성자, 우리는 모두이 이름에 익숙합니다. 생성자는 항상 현재 객체를 생성하는 생성자를 가리 킵니다.
여기서 주목해야 할 것은 각 함수에는 프로토 타입 속성이 있으며이 프로토 타입의 생성자는이 기능을 가리 킵니다. 이 시점 에서이 기능의 프로토 타입을 수정하면 사고가 발생했습니다. 좋다
기능인 (이름, 나이) {this.name = 이름; this.age = age;} person.prototype.getage = function () {return this.age;} person.prototype.getame = function () {return this.name;} var p = new Person ( "Nicholas", 18); console.log (p.constructor); // 사람 (이름, 연령) console.log (p.getage ()); //18console.log (p.getName ()); // 니콜라스그러나 그렇다면 :
기능인 (이름, 나이) {this.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 ()); //18console.log (p.getName ()); // 니콜라스결과적으로 생성자가 변경되었습니다.
그 이유는 프로토 타입 자체가 객체이고 위의 코드는
person.prototype = new Object ({getName : function () {return this.name;}, getage : function () {return this.age;}});생성자는 항상 현재 객체를 생성하는 생성자를 가리키기 때문에 위의 코드가 객체를 출력한다는 것을 이해하기가 어렵지 않습니다.
프로토 타입을 수정 한 후 생성자가 여전히 사람을 가리키기를 원한다면 어떻게해야합니까? 단순하고 person.prototype.constructor에 값을 할당합니다.
person.prototype = {생성자 : person, getName : function () {return this.name; }, getage : function () {return this.age; }}JavaScript의 생성자에 대한 위의 간단한 논의는 내가 공유하는 모든 내용입니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.