在Javascript OO中,何时应该使用this
关键字?
另外,如果我想从同一个类的另一个方法调用类的方法,我应该使用this
还是只使用函数的名称?例如,这是正确的吗?
function Foo()
{
this.bar= function()
{
alert('bar');
}
this.baz= function()
{
this.bar(); //should I use this.bar() or just bar()?
}
}
答案 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中是如何工作的。我认为它可能对你有用。