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中的经典继承.
希望它也有助于其他人.
在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)
更多信息: