Javascript中的类继承

Tar*_*rik 6 javascript inheritance class

我想知道如何在JavaScript中模拟类继承.我知道类不适用于JavaScript,我们使用的方式是通过Prototype对象创建对象和继承事物的函数.

例如,如何将此结构转换为JavaScript:

public class Mankind {
    public string name;
    public string lastname;
}

public class Person: Mankind {
    public void Run(string fromWhat) {
        //write the run logic
    }
}
Run Code Online (Sandbox Code Playgroud)

JavaScript中这段代码的等价物是什么.

编辑:

我还发现了另一个链接,Douglas Crockford解释了CMS的不同继承模型:JavaScript中的经典继承.

希望它也有助于其他人.

CMS*_*CMS 9

在JavaScript中有很多方法可以实现继承和行为重用,也许与基于类的 OOP示例更类似的方式是伪经典继承:

function Mankind (name, lastname) {
  this.name = name;
  this.lastname = lastname;
}

function Person (name, lastname) {
  this.name = name;
  this.lastname = lastname;

  this.run = function() {
    // run logic
  };
}
Person.prototype = new Mankind();
Person.prototype.walk = function () {
  // walk logic
};
Run Code Online (Sandbox Code Playgroud)

run和之间的区别在于walk第一个将存在于每个对象实例上Person,而第二个方法walk将仅存在于Person.prototype原型链中并且将通过原型链访问.

在这种模式中,您会看到一些代码重复,我们需要逻辑来在继承的构造函数上初始化字段,另一种避免这种情况的模式是构造函数应用程序:

function Mankind (name, lastname) {
  this.name = name;
  this.lastname = lastname;
}

function Person (name, lastname) {
  Mankind.apply(this, arguments);
  this.run = function() {
    // run logic
  };
}
Run Code Online (Sandbox Code Playgroud)

更多信息: