Toute fonction en javascript, utilisez simplement new 关键字调用,它都可以被称作 构造函数.
Lors de l'utilisation du mot-clé new pour appeler une fonction, un objet sera implicitement déclaré à l'intérieur de la fonction, puis l'objet lui sera attribué, et enfin cela sera renvoyé implicitement lors de l'utilisation du nouveau mot-clé pour appeler la méthode du livre de l'auteur. , c'est équivalent au processus suivant.
function Book(id, bookname){
var o = new Object();
o.id = id;
o.bookname = bookname;
return o;
}
var b = Book(123,'javascript高级程序设计');
Le o ici est en fait cet objet que nous voyons habituellement.
Il n'y a pas de classes ou de constructeurs en JavaScript.
function Book (){}
// Book 是一个函数
typeof Book
"function"
// Book 是 Function
Book instanceof Function
true
// Book 是 Object
Book instanceof Object
true
Utilisez new pour créer des objets
var book = new Book()
// book 是一个对象
typeof book
"object"
// book 不是 Function 的实例
book instanceof Function
false
// book 是 Object 的实例
book instanceof Object
true
// book 是 Book 的实例
book instanceof Book
true
Bien qu'il n'y ait pas de constructeur en js, ce mot est également utilisé dans la documentation MDN : https://developer.mozilla.org...
Lorsque le code new foo(...) est exécuté :
Un nouvel objet est créé. Il hérite de foo.prototype.
Constructeur foo 被执行。执行的时候,相应的传参会被传入,同时上下文(this)会被指定为这个新实例。new foo 等同于 new foo(), ne peut être utilisé que lorsqu'aucun paramètre n'est transmis.
Si le constructeur renvoie un "objet", alors cet objet remplacera l'intégralité du new出来的结果。如果构造函数没有返回对象,那么newrésultat. Si le constructeur ne renvoie pas d'objet, alors le résultat sera l'objet créé à l'étape 1. ps : Généralement, le constructeur ne renvoie aucune valeur, mais si l'utilisateur souhaite remplacer cette valeur de retour, il peut choisir de renvoie un objet normal pour l'écraser. Bien entendu, le retour d'un tableau sera également écrasé, car les tableaux sont également des objets.
Même si ES6 ajoute des classes, ce ne sont que du sucre syntaxique :
En fait, il ne devrait pas y avoir le terme « constructeur » en js, mais doit être compris comme la méthode de construction d'une fonction. Cela signifie que n'importe quelle fonction peut être utilisée et que n'importe quelle fonction peut être appelée un « constructeur ». Lorsque vous avez écrit ce que l'on appelle le « constructeur », avez-vous remarqué une différence entre celui-ci et les fonctions ordinaires ? Non, ce ne sont que des fonctions ordinaires ? new
Toute fonction en javascript, utilisez simplement
new
关键字调用,它都可以被称作构造函数
.Lors de l'utilisation du mot-clé new pour appeler une fonction, un objet sera implicitement déclaré à l'intérieur de la fonction, puis l'objet lui sera attribué, et enfin cela sera renvoyé implicitement lors de l'utilisation du nouveau mot-clé pour appeler la méthode du livre de l'auteur. , c'est équivalent au processus suivant.
Le o ici est en fait cet objet que nous voyons habituellement.
Il n'y a pas de classes ou de constructeurs en JavaScript.
Utilisez
new
pour créer des objetsBien qu'il n'y ait pas de constructeur en js, ce mot est également utilisé dans la documentation MDN : https://developer.mozilla.org...
Même si ES6 ajoute des classes, ce ne sont que du sucre syntaxique :
Vous avez mal compris la notion de constructeur.
En fait, il ne devrait pas y avoir le terme « constructeur » en js, mais doit être compris comme la méthode de construction d'une fonction. Cela signifie que n'importe quelle fonction peut être utilisée et que n'importe quelle fonction peut être appelée un « constructeur ». Lorsque vous avez écrit ce que l'on appelle le « constructeur », avez-vous remarqué une différence entre celui-ci et les fonctions ordinaires ? Non, ce ne sont que des fonctions ordinaires ?
Ci-dessus, sauf la fonction flèche es6.new
Chaque fonction en js est équivalente à un constructeur (sauf pour la vraie fonction flèche ES6).
Hé, incroyable js !