调用;“私人”;方法来自;“家长”;javascript中的对象

调用;“私人”;方法来自;“家长”;javascript中的对象,javascript,Javascript,在下面的代码中,我需要调用子类Worker function Person(scope, ...) { scope.name = "Juan"; var run = function() { console.log(scope.name + " is running"); }; } function Worker(scope, ...) { Person.call(this, scope, ...); var jumpAndRun = function() {

在下面的代码中,我需要调用子类
Worker

function Person(scope, ...) {
  scope.name = "Juan";

  var run = function() {
     console.log(scope.name + " is running");
  };
}

function Worker(scope, ...) {
  Person.call(this, scope, ...);

  var jumpAndRun = function() {
     console.log(scope.name + " is jumping");
     run(); // how to call this
  };
}

Worker.prototype = Object.create(People.prototype);

当前,如果我调用
run
方法,我会得到一个
错误:run未定义

抱歉,无法执行此操作,除非
人员
类(应称为
人员
)使该方法可用

通常的做法是使“私有”方法以下划线开头。它并没有100%地授予任何安全性,但它至少给了其他开发人员一个暗示,它应该是私有的

function Person(scope, ...) {
  scope.name = "Juan";

  var run = function() {
     console.log(scope.name + " is running");
  };

  this._run = run;
}

function Worker(scope, ...) {
  Person.call(this, scope, ...);

  var jumpAndRun = function() {
     console.log(scope.name + " is jumping");
     this._run(); // how to call this
  };
}

抱歉,无法执行此操作,除非
People
类(应称为
Person
)使该方法可用

通常的做法是使“私有”方法以下划线开头。它并没有100%地授予任何安全性,但它至少给了其他开发人员一个暗示,它应该是私有的

function Person(scope, ...) {
  scope.name = "Juan";

  var run = function() {
     console.log(scope.name + " is running");
  };

  this._run = run;
}

function Worker(scope, ...) {
  Person.call(this, scope, ...);

  var jumpAndRun = function() {
     console.log(scope.name + " is jumping");
     this._run(); // how to call this
  };
}

抱歉,无法执行此操作,除非
People
类(应称为
Person
)使该方法可用

通常的做法是使“私有”方法以下划线开头。它并没有100%地授予任何安全性,但它至少给了其他开发人员一个暗示,它应该是私有的

function Person(scope, ...) {
  scope.name = "Juan";

  var run = function() {
     console.log(scope.name + " is running");
  };

  this._run = run;
}

function Worker(scope, ...) {
  Person.call(this, scope, ...);

  var jumpAndRun = function() {
     console.log(scope.name + " is jumping");
     this._run(); // how to call this
  };
}

抱歉,无法执行此操作,除非
People
类(应称为
Person
)使该方法可用

通常的做法是使“私有”方法以下划线开头。它并没有100%地授予任何安全性,但它至少给了其他开发人员一个暗示,它应该是私有的

function Person(scope, ...) {
  scope.name = "Juan";

  var run = function() {
     console.log(scope.name + " is running");
  };

  this._run = run;
}

function Worker(scope, ...) {
  Person.call(this, scope, ...);

  var jumpAndRun = function() {
     console.log(scope.name + " is jumping");
     this._run(); // how to call this
  };
}


那完全不可能。它对
构造函数的作用域是完全私有的,没有某种程度的“保护”。为什么不能公开它?从何处调用
run
jumpAndRun
?我的建议是:不要试图模拟语言不支持的东西。保持简单。它使代码更容易理解和维护。@FelixKling是的,你是对的,但我不会重写很多地方的代码都是一样的,目前我正在重构,还有什么该死的
scope
?这完全不可能。它对
构造函数的作用域是完全私有的,没有某种程度的“保护”。为什么不能公开它?从何处调用
run
jumpAndRun
?我的建议是:不要试图模拟语言不支持的东西。保持简单。它使代码更容易理解和维护。@FelixKling是的,你是对的,但我不会重写很多地方的代码都是一样的,目前我正在重构,还有什么该死的
scope
?这完全不可能。它对
构造函数的作用域是完全私有的,没有某种程度的“保护”。为什么不能公开它?从何处调用
run
jumpAndRun
?我的建议是:不要试图模拟语言不支持的东西。保持简单。它使代码更容易理解和维护。@FelixKling是的,你是对的,但我不会重写很多地方的代码都是一样的,目前我正在重构,还有什么该死的
scope
?这完全不可能。它对
构造函数的作用域是完全私有的,没有某种程度的“保护”。为什么不能公开它?从何处调用
run
jumpAndRun
?我的建议是:不要试图模拟语言不支持的东西。保持简单。它使代码更容易理解和维护。@FelixKling是的,你是对的,但我不会重写很多代码,在很多地方都是一样的,目前我正在重构。还有,什么是
scope
?你的
jumpAndRun
函数也需要是一个方法,不过。@rkmax让你添加了这个。\u run=run;在Person costructor中?在这里,我做了我认为正确的事情,这里有一把小提琴:您的
jumpAndRun
函数也需要是一个方法,不过@rkmax您添加了this.\u run=run;在Person costructor中?在这里,我做了我认为正确的事情,这里有一把小提琴:您的
jumpAndRun
函数也需要是一个方法,不过@rkmax您添加了this.\u run=run;在Person costructor中?在这里,我做了我认为正确的事情,这里有一把小提琴:您的
jumpAndRun
函数也需要是一个方法,不过@rkmax您添加了this.\u run=run;亲自动手的建筑师?这里我做了我认为正确的事情,这里有一把小提琴: