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

在JavaScript中从私有函数访问公共函数,javascript,oop,javascript-objects,Javascript,Oop,Javascript Objects,我最近开始使用JavaScript中的OOP。而且,我完全被这些东西弄糊涂了。我知道JavaScript与Java完全不同。但这也造成了问题 我试图实现的目标是: function myClass() { //Declare private variable var privateVar = ''; //To act as constructor privateFunction('Hello'); //Getter this.publicFun

我最近开始使用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());
这是抛出一个错误,它说:

未捕获类型错误:未定义不是函数

为了

我该怎么办?如何实施这一部分。?我是否误解了JavaScript类的某些内容?

请看答案

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

查看答案


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

您应该了解声明函数和函数表达式之间的区别

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


PS.@Akash Pradhan answer将解决您的问题,但我想您仍然应该检查背景并理解为什么它没有按您尝试的方式工作:)

您应该阅读有关提升以及声明函数和函数表达式之间的差异

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

PS.@Akash Pradhan answer会解决你的问题,但我想你还是应该检查一下背景,理解为什么它不能像你尝试的那样工作:)

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