在JavaScript中从私有函数访问公共函数

时间:2015-02-03 08:52:10

标签: javascript oop javascript-objects

我最近在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());

这是一个错误,它说:

  

未捕获的TypeError:undefined不是函数

有关

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

我该怎么办?如何实现这一部分。我误解了一些关于JavaScript类的东西。?

2 个答案:

答案 0 :(得分:3)

请看this回答。

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

答案 1 :(得分:1)

您应该阅读声明函数和函数表达式之间的提升和区别。

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

PS。 @Akash Pradhan的回答将解决你的问题,但我想你仍然应该检查背景并找不到为什么它不按照你试过的方式工作:)