In diesem Artikel geht es um die Implementierungsmethode (Code) der JavaScript-Vererbung. Ich hoffe, dass er für Freunde hilfreich ist.
Es gibt viele Möglichkeiten, Vererbung in JS zu implementieren. Im Folgenden sind die empfohlenen Methoden aufgeführt. Sie können mehr über andere Vererbungsmethoden erfahren:
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.
Tatsächlich hat Javascript eine einfachere Methode bereitgestellt Bei der Implementierungsmethode muss das Rad hier nicht neu erfunden werden, und die Methode ist nicht perfekt. MDN-Beispiel:
// 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.'
Wenn Sie mehrere Objekte erben möchten, können Sie die Mischmethode verwenden:
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 };
Empfehlung für einen verwandten Artikel:
Verwendung dieses Schlüsselworts in Javascript (mit Code)
Wie implementiert jQuery Barrage? jQuery-Code zur Erzielung eines Sperreffekts
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Vererbung in Javascript (Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!