Lors de l'instanciation d'un objet en JavaScript, notre méthode courante consiste à utiliser l'opérateur new. Cet article partage principalement avec vous l'explication détaillée du nouvel opérateur en JavaScript, en espérant vous aider.
var Foo = function(x, y) { this.x = x this.y = y }var foo = new Foo(1, 2) // Foo {x: 1, y: 2}
Alors, que fait exactement le nouvel opérateur ? Nous pouvons examiner quel type d'objet foo est.
Premièrement, foo lui-même est un objet, puis il a deux attributs, x et y. Parallèlement, sur la console de la plupart des navigateurs, on peut également voir un attribut légèrement plus léger appelé __proto__. Il possède deux attributs, constructeur et __proto__.
__proto__ est une propriété accesseur. Il pointe vers le [[Prototype]] de l'objet actuel lui-même. Ce [[Prototype]] n'est pas un attribut, c'est juste un symbole qui représente l'objet prototype Foo.prototype du constructeur Foo. Description sur MDN.
foo.__proto__ === Foo.prototype // true
var Foo = function(x, y) { this.x = x this.y = y }// 1. 创建一个空对象var foo = {}// 2. 调用构造函数,并且将构造函数的`this`指向fooFoo.call(foo, 1, 2)// 3. foo继承Foo的原型对象foo.__proto__ = Foo.prototype
renvoie une valeur.
var Foo = function(x, y) { this.x = x this.y = y return { a: this.x } }var foo = new Foo(1, 2) // {a: 1}
Une attention particulière doit être portée au fait que si ce que vous retournez dans le constructeur n'est pas un objet, mais une valeur ordinaire, telle qu'une valeur Number ou String, alors ce qui est renvoyé après new sera toujours un instanciation.
Recommandations associées :Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!