相关疑难解决方法(0)

继承父构造函数参数

我正在浏览类似主题的讨论,但无法找到我的情况......

我试图调用具有参数的父构造函数......似乎无法使其正确.

我有一个PhysicsBody超类,它aNode作为唯一的构造函数参数:

function PhysicsBody(aNode) {
    this.userData = aNode;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

其中PhysicsBody继承了一个DynamicBody类.构造函数也aNode只是作为参数...就像我会用Java做的那样,我喜欢称之为等价的东西"super(aNode");似乎无法找出方法.

这是DynamicBody班级:

// Wanted to give "new PhysicsBody(this, aNode)", but that fails!
DynamicBody.prototype = new PhysicsBody();
DynamicBody.prototype.constructor=DynamicBody;

function DynamicBody(aNode) {

    // calling the parent constructor fails too:
    // PhysicsBody.prototype.constructor.call(this, aNode);
    //...
}
Run Code Online (Sandbox Code Playgroud)

javascript inheritance constructor arguments

35
推荐指数
2
解决办法
2万
查看次数

Javascript继承:在设置原型时调用Object.create

我正在学习面向对象的Javascript的一些方面.我遇到了这个片段

var Person = function(firstName, lastName)
{
  this.lastName = lastName;
  this.firstName = firstName;
};

Object.defineProperties(Person.prototype, {
  sayHi: {
    value: function() {
      return "Hi my name is " + this.firstName;
    }
  },
  fullName: {
    get: function() {
      return this.firstName + " " + this.lastName;
    }
  }
});

var Employee = function(firstName, lastName, position) {
  Person.call(this, firstName, lastName);
  this.position = position;
};

Employee.prototype = Object.create(Person.prototype);

var john = new Employee("John", "Doe", "Dev");
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么这个代码片段使用Object.create(Person.prototype)?我们不应该简单地重置原型:

Employee.prototype = Person.prototype;
Run Code Online (Sandbox Code Playgroud)

javascript prototype prototype-programming

8
推荐指数
1
解决办法
1226
查看次数