javascript - Réponse : lorsqu'un objet instance appelle un constructeur, quel est l'intérêt de cela dans le constructeur ?
ringa_lee
ringa_lee 2017-07-05 10:39:35
0
1
824

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_lee
ringa_lee

ringa_lee

répondre à tous(1)
某草草

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal