مُنشئ ، مُنشئ ، نحن جميعًا على دراية بهذا الاسم. يشير المنشئ دائمًا إلى المُنشئ الذي ينشئ الكائن الحالي.
شيء واحد يجب ملاحظته هنا هو أن كل وظيفة لديها خاصية النموذج الأولي ، وأن مُنشئ هذا النموذج الأولي يشير إلى هذه الوظيفة. في هذا الوقت ، عندما نقوم بتعديل النموذج الأولي لهذه الوظيفة ، وقع حادث. يحب
وظيفة الشخص (الاسم ، العمر) {this.name = name ؛ this.age = Age ؛} person.prototype.getage = function () {return this.age ؛} person.prototype.getName = function () {return this.name ؛} var p = new شخص ("nicholas" ، 18) ؛ console.log (p.constructor) ؛ // person (name ، Age) console.log (p.getage ()) ؛ //18console.log (p.getName ()) ؛ // نيكولاسولكن إذا كان الأمر كذلك:
وظيفة الشخص (الاسم ، العمر) {this.name = name ؛ this.age = Age ؛} person.prototype = {getName: function () {return this.name ؛ } ، getage: function () {return this.age ؛ }} var p = شخص جديد ("نيكولاس" ، 18) ؛ console.log (p.constructor) ؛ // object () console.log (p.getage ()) ؛ //18console.log (p.getName ()) ؛ // نيكولاسنتيجة لذلك ، تغير المنشئ.
والسبب هو أن النموذج الأولي نفسه هو أيضًا كائن ، والرمز أعلاه يعادل
person.prototype = كائن جديد ({getName: function () {return this.name ؛} ، getage: function () {return this.age ؛}}) ؛نظرًا لأن المنشئ يشير دائمًا إلى المُنشئ الذي ينشئ الكائن الحالي ، فليس من الصعب فهم أن الكود P.Constructor أعلاه يخرج كائن.
ماذا علي أن أفعل إذا كان المنشئ بعد تعديل النموذج الأولي وما زال يريده أن يشير إلى شخص؟ بسيط ، فقط تعيين قيمة إلى person.prototype.constructor:
person.prototype = {constructor: person ، getName: function () {return this.name ؛ } ، getage: function () {return this.age ؛ }}المناقشة الموجزة أعلاه حول مُنشئ في JavaScript هي كل المحتوى الذي أشاركه معك. آمل أن يعطيك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.