Le contenu de cet article explique comment créer des objets en js ? La méthode de création d'objets en js (avec code) a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer, j'espère qu'elle vous sera utile.
Héritage js
Héritage : les sous-classes peuvent utiliser toutes les fonctions de la classe parent et étendre ces fonctions. Le processus d'héritage est le processus du général au spécial.
héritage de classe js
// 父类 var supperClass = function() { var id = 1; this.name = ['js']; this.superVal = function() { console.log('supreVal is true'); console.log(id); } } // 父类添加共有方法 supperClass.prototype.getSupperVal = function () { return this.superVal(); } // 子类 var subClass = function() { this.subVal = function() { console.log('this is subVal') } } // 继承父类 subClass.prototype = new supperClass(); // 子类添加共有方法 subClass.prototype.getsubVal = function() { return this.subVal(); } var sub = new subClass(); sub.getSupperVal(); //superValue is true sub.getsubVal(); //this is subValue console.log(sub.name); sub.name.push('java'); //["javascript"] var sub2 = new subClass(); console.log(sub2.name); // ["js", "java"]
Le code le plus central est SubClass.prototype = new SuperClass() ;
Pointez le prototype __proto__ vers l'objet prototype de la classe parent. De cette façon, la sous-classe peut accéder aux propriétés et méthodes publiques et protégées de la classe parent. Dans le même temps, les propriétés et méthodes privées de la classe parent ne seront pas héritées par la sous-classe.
Inconvénients
Frappez au tableau, comme dans le dernier paragraphe du code ci-dessus, utilisez la méthode d'héritage de classe S'il y a un [type de référence] dans le. constructeur de la classe parent, il sera partagé par toutes les instances de la sous-classe, donc si une instance d'une sous-classe modifie ce type de référence, cela affectera les instances des autres sous-classes.
héritage de constructeur js
Officiellement, en raison des lacunes ci-dessus, l'héritage de constructeur existe L'idée centrale de l'héritage de constructeur est SuperClass.call (ceci, id), modifie directement le pointeur de ceci, de sorte que les propriétés et méthodes créées via cela soient copiées dans la sous-classe. Parce qu'elles sont copiées séparément, chaque sous-classe instanciée ne s'affecte pas les unes les autres. Mais cela entraînera un gaspillage de mémoire
var parentClass = function(name, id) { this.name = name; this.id = id; this.getName = function(){ console.log(this.name) } } parentClass.prototype.show = function( ) { console.log(this.id) } var childClass = function(name, id) { parentClass.call(this, name, id); } var subClass = new childClass('zjj', 10);
Résumons d'abord les avantages de l'héritage de classe et les inconvénients de l'héritage de constructeur<.>
= | 类继承 | 构造函数继承 |
---|---|---|
核心思想 | 子类的原型是父类实例化的对象 | SuperClass.call(this,id) |
优点 | 子类实例化对象的属性和方法都指向父类的原型 | 每个实例化的子类互不影响 |
缺点 | 子类之间可能会互相影响 | 内存浪费 |
Héritage JS - Héritage de chaîne de prototypes et héritage de classe_Connaissances de base
Partage de plusieurs styles d'héritage js
Explication détaillée de l'héritage de classe js et des compétences de prototype d'héritage_javascript
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!