非常简单的Javascript继承

Hep*_*tic 1 javascript prototype

我需要在JavaScript中使用超级简单继承的超级可读版本.这是一些自动生成的代码,我无法使用外部函数或库.

我真正想要的是,假设Point3d"继承"Point,我想要这样的东西:

function Point(x,y) {
  this.x = x;
  this.y = y;
}

function Point3d(x,y,z) {
  Point(x, y);
  this.z = z;
}
Run Code Online (Sandbox Code Playgroud)

除了它实际上没有工作:

var pt = new Point3d(230,30,11);
// but x and y are in global scope, they should be in pt.x and pt.y :(
Run Code Online (Sandbox Code Playgroud)

一个可能的选择,在代码生成中会复制所有成员 - 但由于Javascript是基于原型的,我想这很容易做到(如果我真的知道Javascript)

谢谢

小智 8

使用Point构造函数应用于Point3d对象.call().

function Point3d(x,y,z) {
  Point.call(this, x, y);
  this.z = z;
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/MSfu5/

.call方法设置this您正在调用的函数的值.

这里我们将它设置为Point 3d正在构造的新对象.


如果Point原型上有任何Point3d应该继承的东西,你可以使Point3d.prototype对象成为空的实例Point.