Ce que cet article vous apporte concerne la méthode d'implémentation (code) de l'héritage JavaScript. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Il existe de nombreuses façons d'implémenter l'héritage dans JS. Voici les méthodes les plus recommandées. Vous pouvez en apprendre davantage sur d'autres méthodes d'héritage :
function object(o) { function F() {} F.prototype = o; return new F(); } function inheritPrototype(subType, superType) { var newObj = object(superType.prototype); newObj.constructor = subType; subType.prototype = newObj; } function People() { this.cls = 'people'; } People.prototype.say = function(name) { name = name || this.cls; console.log('My class is '+ name); } function Student() { People.call(this); this.type = 'student'; } inheritPrototype(Student, People); Student.prototype.goToSchool = function() { console.log('I go to school every day.'); } // 测试 var stu = new Student(); console.log('class: ' + stu.cls); // class: people console.log('type: ' + stu.type); // type: student stu.say(); // My class is people stu.goToSchool (); // I go to school every day.
En fait, javascript a fourni. plus Méthode d'implémentation simple, pas besoin de réinventer la roue ici, et la méthode n'est pas parfaite, exemple MDN :
// Shape - 父类(superclass) function Shape() { this.x = 0; this.y = 0; } // 父类的方法 Shape.prototype.move = function(x, y) { this.x += x; this.y += y; console.info('Shape moved.'); }; // Rectangle - 子类(subclass) function Rectangle() { Shape.call(this); // call super constructor. } // 子类续承父类 Rectangle.prototype = Object.create(Shape.prototype); Rectangle.prototype.constructor = Rectangle; var rect = new Rectangle(); console.log('Is rect an instance of Rectangle?', rect instanceof Rectangle); // true console.log('Is rect an instance of Shape?', rect instanceof Shape); // true rect.move(1, 1); // Outputs, 'Shape moved.'
Si vous souhaitez hériter de plusieurs objets, vous pouvez utiliser la méthode de mixage :
function MyClass() { SuperClass.call(this); OtherSuperClass.call(this); } // 继承一个类 MyClass.prototype = Object.create(SuperClass.prototype); // 混合其它 Object.assign(MyClass.prototype, OtherSuperClass.prototype); // 重新指定constructor MyClass.prototype.constructor = MyClass; MyClass.prototype.myMethod = function() { // do a thing };
Articles connexes recommandés :
Utilisation de ce mot-clé en javascript (avec code)
Comment jQuery implémente-t-il le barrage ? Code jQuery pour obtenir un effet de barrage
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!