이 글의 내용은 자바스크립트 생성자에 대한 심도있는 논의입니다. 참고할만한 가치가 있으니 도움이 필요한 분들에게 도움이 되었으면 좋겠습니다.
오늘은 자바스크립트 생성자에 대해 논의하기로 약속이 있습니다. 예정대로 와주셔서 감사합니다
생성자 기능에 대해 어제와 며칠 전에 논의하고 결론을 내렸습니다. #🎜 🎜#
constructor는 기본적으로 이 프로토타입의 생성자를 가리키는 프로토타입 개체의 속성입니다. #🎜🎜 #
이 결론은 우리의 일상 업무에 거의 쓸모가 없는 것 같습니다. 그렇다면 생성자는 정말 쓸모가 없는 것일까요?
생성자를 사용하여 재사용 가능한 객체 생성
우리는 일상 업무에서 객체를 생성해야 하는 경우가 종종 있는데, 대부분 객체 직접 수량을 사용하여 직접 생성합니다. #
var person = { name:'postbird', address:'earth', sayHello:function(){console.log('Hello,I am ' + this.name);} };
//创建了一个构造函数 function Person(name,address){ this.name = name; this.address = address; } //为构造函数的原型对象添加一个方法sayHello Person.prototype.sayHello = function(){ console.log('Hi I am ' + this.name); } //通过构造函数Person实例化一个p1,并传参 var p1 = new Person('postbird','earth'); //通过构造函数Person实例化一个p2,并传参 var p2 = new Person('ptbird','month'); console.log(p1);//{name: "postbird", address: "earth"} console.log(p2);//{name: "ptbird", address: "month"} // p1和p2 继承了Person的sayHello方法 p1.sayHello()//Hi I am ptbird p2.sayHello()//Hi I am postbird
js의 생성자 생성자와 관련하여 매우 고전적인 데모가 있습니다
function Person(area){ this.type = 'person'; this.area = area; } Person.prototype.sayArea = function(){ console.log(this.area); } var Father = function(age){ this.age = age; } Father.prototype = new Person('Beijin'); console.log(Person.prototype.constructor===Person) //true console.log(Father.prototype.constructor===Person); //true Father.prototype.constructor = Father;//修正 console.log(Father.prototype.constructor===Father); //true var one = new father(25); console.log(one.constructor===Father) // true
Father.prototype.constructor = Father;//修正
왜 수정해야 합니까?
constructor는 기본적으로 이 프로토타입의 생성자를 가리키는 속성이 아닙니다.?
이 코드 줄을 주석으로 처리하겠습니다.function Person(area){ this.type = 'person'; this.area = area; } Person.prototype.sayArea = function(){ console.log(this.area); } var Father = function(age){ this.age = age; } Father.prototype = new Person('Beijin'); console.log(Person.prototype.constructor===Person) //true console.log(Father.prototype.constructor===Person); //true //Father.prototype.constructor = Father;//修正 console.log(Father.prototype.constructor===Father); //false var one = new Father(25); console.log(one.constructor===Person) // true
Father.prototype = new Person('Beijin');
console.log((new Person('Beijin')).__proto__ === Person.prototype) //true
때문입니다. proto_
=== Person.prototype 및 Person.prototype.constructor == function Person(), 따라서 Father.prototype.constructor == Person.prototype.constructor //function Person() var one = new Father일 때 (25), one.constructor = Father .prototype.constructor이므로 one.constructor는 Person() 함수를 가리키므로 수정해야 합니다. 그렇지 않으면 프로토타입 체인이 엉망이 됩니다 #🎜🎜 #위 내용은 JavaScript 생성자에 대한 심층 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!