Javascript 为什么可以';我的JS对象看不到自己的功能吗?

Javascript 为什么可以';我的JS对象看不到自己的功能吗?,javascript,object,Javascript,Object,我不知道我在那里做错了什么。我试过了 DialogBox.prototype.test DialogBox.test test 我试图使它在内部调用自己的函数时,不需要一直放置这个。。。示例:this.test() 更新: 在调用私有函数时,是否有一种方法不在任何地方键入“this”?通常我只编写一次使用的简单全局函数,但现在我尝试编写一些不同的东西,我将在我的类中调用这些私有函数。所以我尽量避免在任何地方使用“this”。。。更不用说它使代码的可读性非常差 例如,在Java(而不是JS)中,

我不知道我在那里做错了什么。我试过了

DialogBox.prototype.test
DialogBox.test
test
我试图使它在内部调用自己的函数时,不需要一直放置
这个
。。。示例:
this.test()

更新: 在调用私有函数时,是否有一种方法不在任何地方键入“this”?通常我只编写一次使用的简单全局函数,但现在我尝试编写一些不同的东西,我将在我的类中调用这些私有函数。所以我尽量避免在任何地方使用“this”。。。更不用说它使代码的可读性非常差


例如,在Java(而不是JS)中,您不需要在任何地方键入“this”。

快速修复:

在对话框定义中,使用
this.
定义其方法:

综合回答:

答案太多了


有关此主题的详细信息,请参阅Addy Osmani的书,特别是关于构造函数模式的部分以及相关章节。

有关快速修复的信息:

在对话框定义中,使用
this.
定义其方法:

综合回答:

答案太多了


有关此主题的详细信息,请参阅Addy Osmani的书,特别是关于构造函数模式的部分以及相关章节。

此外,您给出的示例将dialogbox放入全局名称空间。如果这不是出于设计,请将“var”放在前面。此外,您给出的示例将dialogbox放在全局名称空间中。如果这不是设计的,请在前面加上“var”。啊。。。在debug()中调用函数怎么样?例如,调用dialogbox.deubg(),然后在debug中调用test()。它迫使我使用这个.test(),但有点烦人,语法也不干净。。。我试着用不同的方式来避免在课堂上使用“this”。。ugh@codenamezero:在类构造函数中使用
这个
是正确的方法。我不知道你说的“语法不干净”是什么意思。如果你想详细说明的话,可以在你的问题后面加一个新的部分(标题为“编辑”或“更新”比较合适):-)我知道这很混乱——你不熟悉OOP机制,比如继承、多态、封装等吗?请记住,JavaScript中的所有内容都是一个对象——包括函数,这就是为什么我们可以使用
this
来引用该函数的实例(以这种方式使用时,我们将其称为类)。@codenamezero:下面是一个关于使用“this inside function”的StackOverflow问题的有用答案:我知道OOP,但以Java为例,类中有私有函数,当我们调用函数时,只需键入函数名而不键入“this”。。。只是我觉得很奇怪,在JS类中,调用私有函数时,我们必须将“this”放在所有地方。啊。。。在debug()中调用函数怎么样?例如,调用dialogbox.deubg(),然后在debug中调用test()。它迫使我使用这个.test(),但有点烦人,语法也不干净。。。我试着用不同的方式来避免在课堂上使用“this”。。ugh@codenamezero:在类构造函数中使用
这个
是正确的方法。我不知道你说的“语法不干净”是什么意思。如果你想详细说明的话,可以在你的问题后面加一个新的部分(标题为“编辑”或“更新”比较合适):-)我知道这很混乱——你不熟悉OOP机制,比如继承、多态、封装等吗?请记住,JavaScript中的所有内容都是一个对象——包括函数,这就是为什么我们可以使用
this
来引用该函数的实例(以这种方式使用时,我们将其称为类)。@codenamezero:下面是一个关于使用“this inside function”的StackOverflow问题的有用答案:我知道OOP,但以Java为例,类中有私有函数,当我们调用函数时,只需键入函数名而不键入“this”。。。我只是觉得奇怪,在JS类中,调用私有函数时,我们必须将“this”放在所有地方。
DialogBox.prototype.test
DialogBox.test
test
function DialogBox() {
    this.__DEBUGGING__ = false;

    this.debug = function (b) {
        this.__DEBUGGING__ = b;
    };

    this.test = function (b) {
        alert("hello worodl");
    };
};


$(document).ready(function () {
    dialogbox = new DialogBox();
    dialogbox.test();
});