呼叫“;私人的“;方法来自“;“父”;对象

Call "private" method from "parent" object in javascript

本文关键字:对象 呼叫 方法      更新时间:2023-09-26

在下面的代码中,我需要调用子类Worker 中的"private"方法run

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方法,我会得到一个Error: run is not defined!

对不起,不能这样做,除非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
  };
}