在Javascript OO,什么时候应该使用this
关键字?
另外,如果我想从同一类的另一种方法调用类的方法,我应该用this
或功能的只是名字? 例如,这是正确的?
function Foo()
{
this.bar= function()
{
alert('bar');
}
this.baz= function()
{
this.bar(); //should I use this.bar() or just bar()?
}
}
当谈到“面向对象”的JavaScript,这里是一个很好的引导标志迪金森在这里SO链接: 在JavaScript非官方议员 。 它不进入详细介绍,你并不真的现在需要一些其他的东西,但一旦你理解JavaScript是如何工作的,你会看到,它是从普通的面向对象的语言完全不同,当涉及到的东西像什么this
的真正含义。
我会说,你的情况,你一定要使用this
,但是也许你的职能应该是在prototype
的“类”的一部分(这避免了每次创建新实例时重新定义的功能。)
我发现3种方式来定义一个JavaScript类很有帮助。
只是强调和同情的@前面的回答tj111我建议你阅读此 。 为了更好地理解函数的作用域。
在这种特定情况下,这是最好的地方,使用自变量引用this
防止内部混乱的功能和头痛。
function Foo()
{
var self = this;
this.bar= function()
{
alert('bar');
}
this.baz= function()
{
self.bar();
}
}
其中的原因是因为,一切都在JavaScript是一种对象,在this
功能中的关键字是指父功能。 通过在一定范围内定义一个变量,你保证变量将保持其范围。
正确的版本是一个当您尝试调用的函数,不给错误。 如果忽略this
,你会得到一个ReferenceError
异常。
在另一篇关于JavaScript中“功能走样”,我详细解释,结合实例,如何“这个”在JavaScript的工作。 我认为这可能是对你有用。
请检查: JavaScript函数混淆似乎不工作