【问题标题】:Access public function from private function in JavaScript从 JavaScript 中的私有函数访问公共函数
【发布时间】:2015-04-02 09:42:05
【问题描述】:

我最近开始使用 JavaScript 中的OOP。而且,我对这些事情感到困惑。我知道 JavaScript 与 Java 完全不同。但这会导致问题。

我正在尝试实现的内容:

function myClass() {
    //Declare private variable
    var privateVar = '';

    //To act as constructor
    privateFunction('Hello');

    //Getter
    this.publicFunctionGet = function() {
        return privateVar;
    }
    //Setter
    this.publicFunctionSet = function(x) {
        privateVar = x;
    }
    function privateFunction(x) {
        this.publicFunctionSet(x);
    }
}

//Create object of myClass
var me = new myClass();
alert(me.publicFunctionGet());

这是抛出一个错误,上面写着:

Uncaught TypeError: undefined is not a function

对于

function privateFunction(x) {
    this.publicFunctionSet(x);
}

我该怎么办?如何实现这部分。?我对 JavaScript 类有什么误解吗?

【问题讨论】:

    标签: javascript oop javascript-objects


    【解决方案1】:

    this的回答。

    您将公共函数包装在一个对象字面量中并返回它。因此,您可以在对象字面量函数中调用私有函数。

    【讨论】:

      【解决方案2】:

      你应该阅读关于提升以及声明函数和函数表达式之间的区别。

      您的代码不起作用,因为 js 知道声明了 var publicFunctionSet(函数表达式),但在声明 privateFunction(x) 时它不是函数。

      附言。 @Akash Pradhan 的回答将解决您的问题,但我想您仍然应该检查背景并不明白为什么它没有按照您尝试的方式工作:)

      【讨论】:

        猜你喜欢
        • 2012-05-29
        • 2013-05-01
        • 1970-01-01
        • 2016-01-09
        • 2017-02-05
        • 2010-10-04
        • 2021-07-23
        • 2012-10-25
        • 1970-01-01
        相关资源
        最近更新 更多