Home  >  Article  >  Web Front-end  >  How to implement multiple inheritance in JavaScript

How to implement multiple inheritance in JavaScript

亚连
亚连Original
2018-06-12 17:48:083038browse

This article mainly introduces the method of implementing multiple inheritance in JavaScript, and analyzes the specific steps and related operating techniques of JavaScript to implement multiple inheritance in detail in the form of examples. Friends in need can refer to the following

The examples in this article describe How to implement multiple inheritance in JavaScript. Share it with everyone for your reference, as follows:

1. Define an empty parent class constructor, and then define attributes and methods for the parent class through prototype

2. Define an The empty constructor of the subclass, then binds the prototype of the subclass to the instance of the parent class, and then binds the parent class of the prototype of the subclass to the instance of the parent class. Set your own properties and methods for subclasses through prototype.

3. Define an empty grandson class constructor, then bind the grandson class prototype to the subclass instance, and then bind the parent class of the grandson class prototype to the subclass instance. Define your own properties and methods for the grandchild class through prototype.

4. Instantiate a grandchild object. By calling the instance object, you can call its own method. You can also call the method of the grandchild's parent class, that is, the subclass in this article, or you can directly call the largest parent class, that is, The methods of the parent class here can also add properties and methods to the current object.

function Person(){}
Person.prototype.name = "人";// 为人类创建一个name属性
Person.prototype.say = function(content){// 为人类创建一个说话的方法
  if(!this.name){ // 如果对象不存在name属性,则使用原型链的name
    this.name = this.__proto__.name;
  }
  console.log("我是" + this.name + ",我想说"+content);
};
function Parent(){}
Parent.prototype = new Person();  // 设置Parent类继承Person类
Parent.prototype.superClass = new Person();// 设置superClass保存父类Person的方法属性
Parent.prototype.name = "父辈类";// 设置Parent类的name属性
Parent.prototype.say = function(){// 设置Parent类自己的 say 方法
  console.log("我是Parent类的say方法!");
};
function Child(){}
Child.prototype = new Parent();// 设置Child类继承Parent类
Child.prototype.superClass = new Parent();// 设置superClass保存父类Parent的方法属性
Child.prototype.say = function(){  //设置Child类自己的say方法
  console.log("我是Child类的say方法!");
}
var c = new Child();// 实例化一个Child对象
c.say();  // 调用自身原型的say方法,输出:我是Child类的say方法!
c.superClass.say(); // 调用父类Parent的say方法,输出: 我是Parent类的say方法!
c.superClass.superClass.say("哈哈");// 直接调用最大的父类Person的say方法(方法中的this指向Person),输出:我是人,我想说哈哈"
// 用call调用最大的父类Person的say方法(方法中的this指向实例化对象c,但此时c并没有name属性,所以this.name用的是Parent的name)
c.superClass.superClass.say.call(c,"嘻嘻"); // 输出:我是父辈类,我想说嘻嘻
c.name = "子类实例";// 给当前对象增加name属性
// 还是用call调用最大父类Person的say方法(此时c对象中已经有name属性);
c.superClass.superClass.say.call(c,"我是子类的实例化对象"); // 输出:我是子类实例,我想说我是子类的实例化对象

The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.

Related articles:

How to use eventBus in vue to achieve communication between components at the same level

How to implement downloading in node.js Picture

Examples of how to implement hls playback using vue2.0 vue-dplayer technologies

In vue2.0 element UI through el- How to export data from table to Excel

Detailed explanation of FastClick source code (detailed tutorial)

The above is the detailed content of How to implement multiple inheritance in JavaScript. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn