recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Réponse : lorsqu'un objet instance appelle un constructeur, quel est l'intérêt de cela dans le constructeur ?

Ce problème vient en fait de l'analyse du code source de jQuery, j'ai vu que var ret = jQuery.merge(this.constructor(), elems ); y était utilisé, et this.constructor() renvoie un objet instance vide créé par la méthode init. Par conséquent, je suis confus quant à l’orientation de cette mesure.
Voici le code de test :

function Person() {
    this.name = 'ddadaa';
    console.log(this);
}
var p1 = new Person();
p1.constructor();        //  Person {name: "ddadaa"}
var p2 = p1.constructor;
p2();                    //打印的是window

Pourquoi le pointeur de this est-il modifié lorsque constructor() est appelé directement ici et qu'un nouvel objet est automatiquement créé ? L’implémentation interne de la méthode constructor() a-t-elle un impact là-dessus ?

ringa_leeringa_lee2762 Il y a quelques jours838

répondre à tous(1)je répondrai

  • 某草草

    某草草2017-07-05 10:41:35

    Ceci et constructor()方法的内部实现没有什么关系,其实就是函数内this指向的问题。
    当函数作为对象的属性调用的时候,this指向这个对象;
    当函数直接调用的时候,在非严格模式下,this指向window
    p1.constructor指向的就是Person函数,当调用p1.constructor();时,Person是作为p1的属性调用的,所以this指向p1;当调用var p2 = p1.constructor;p2();时,其实就相当于直接调用Person();,所以this指向window.

    répondre
    0
  • Annulerrépondre