super.call(this) 的正确用法是什么

What is the proper use of super.call(this)

我有一个class函数(不是我最初开发的)...

function Project()
{
  Project.super.call(this);
  // this._some_var = null;
  /* other initial vars */
  ...
  return DefensiveObject.create(this); // see comment below
}

function initialize()
  {
     //*******Initialize Project************
  }
  ...

return Project;

此函数是 运行 节点 main.js 包含的名为“Project.js”的模块的一部分。

  return DefensiveObject.create(this); // not return Object.create(this)

DefensiveObject 是一个 class 以防止对象获取或 设置未在 class.

中明确设置的属性

main.js 调用 Project.initialize() 驻留在我的项目 class.

我的问题是为什么需要调用“Project.super.call(this);”?

在 Javascript 中,保留字 super 在 ES6 classes 中用于引用子项的父项 class,使用它来引用函数是没有意义的.

请阅读这篇解释 super 用法的文章

https://jordankasper.com/understanding-super-in-javascript/

这篇中型文章也可以帮助你 https://medium.com/beginners-guide-to-mobile-web-development/super-and-extends-in-javascript-es6-understanding-the-tough-parts-6120372d3420

Project.super.call(this) 行是一种允许在“一次性”class(未包含在原始问题中)中使用处置方法的方法,它允许清理记忆中的代码。