什么时候在javascript OO中使用它?

时间:2009-07-17 16:56:14

标签: javascript oop scope

在Javascript OO中,何时应该使用this关键字?

另外,如果我想从同一个类的另一个方法调用类的方法,我应该使用this还是只使用函数的名称?例如,这是正确的吗?

function Foo()
{
   this.bar= function()
   {
      alert('bar');
   }

   this.baz= function()
   {
     this.bar(); //should I use this.bar() or just bar()?
   }
}

6 个答案:

答案 0 :(得分:6)

当涉及到“面向对象”的JavaScript时,这里有一个很好的指南Mark Dickinson在这里链接到:Private Members in JavaScript。它确实详细介绍了其他一些你现在并不需要的东西,但是一旦你理解了JavaScript的工作原理,你就会发现它与普通的面向对象语言完全不同,就像{{1真的意思是。

我会说,在你的情况下,你绝对应该使用this,但也许你的函数应该在你的“类”的this部分(这避免了每次重新定义函数创建了新实例。)

答案 1 :(得分:1)

答案 2 :(得分:0)

在这个特定的例子中,最好在this的位置使用自引用变量来防止功能中的混淆和头痛。

function Foo()
{
   var self = this;

   this.bar= function()
   {
      alert('bar');
   }

   this.baz= function()
   {
     self.bar();
   }
}

之所以如此,是因为javascript中的所有内容都是对象,函数内的this关键字是指父函数。通过在某个范围内定义变量,您保证该变量将保持其范围。

答案 3 :(得分:0)

只是强调并同情@ tj111之前的回答我建议你阅读this。为了更好地理解功能范围。

答案 4 :(得分:0)

正确的版本是在您尝试调用该函数时不会出错的版本。如果省略this,您将获得ReferenceError例外。

答案 5 :(得分:0)

在另一篇关于JavaScript中的“函数别名”的文章中,我详细解释了“这个”在JavaScript中是如何工作的。我认为它可能对你有用。

请检查:JavaScript function aliasing doesn't seem to work