javascript - 从javascript类中的 "Public"方法访问 "Private"方法

标签 javascript oop private public

有没有一种方法可以从类中的“私有(private)”函数调用“公共(public)”javascript 函数?

查看下面的类:

function Class()
{
    this.publicMethod = function()
    {
        alert("hello");
    }

    privateMethod = function()
    {
        publicMethod();
    }

    this.test = function()
    {
        privateMethod();
    }
}

这是我运行的代码:

var class = new Class();
class.test();

Firebug 给出了这个错误:

publicMethod 未定义:[出现此错误时中断] publicMethod();

是否有其他方法可以在不访问全局类变量的情况下在 privateMethod() 中调用 publicMethod() [即class.publicMethod()]?

最佳答案

您可以在构造函数的范围内保存一个变量来保存对 this 的引用。

请注意:在您的示例中,您在 privateMethod = function() 之前遗漏了 var 使 privateMethod 全局。我在这里更新了解决方案:

function Class()
{
  // store this for later.
  var self = this;
  this.publicMethod = function()
  {
    alert("hello");
  }

  var privateMethod = function()
  {
    // call the method on the version we saved in the constructor
    self.publicMethod();
  }

  this.test = function()
  {
    privateMethod();
  }
}

关于javascript - 从javascript类中的 "Public"方法访问 "Private"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2703582/

相关文章:

java - 为什么继承的公共(public)方法操作父类(super class)的私有(private)属性而不是子类?

javascript - 打字时显示字符

javascript - 如何使用 Angular 在 HTML 中呈现 Word 文档(.doc、.docx)

java - 为什么我的代码在检查两个相等的字符串时返回 false?

Java super() 继承

javascript - 如何向 JavaScript 对象添加方法并使用该对象的变量

在嵌套匿名结构上忽略 C++ 私有(private)修饰符

c++ - CRTP继承中的基类 "friending"是否也会影响子类?

php - 如何将javascript倒数计时器与服务器同步

c# - 在 Winforms web 浏览器控件中使用 ActiveXObject