var someObject = {
someArray : new Array(),
someInt : 0,
Total: function(){
this.someInt = 0;//we used "this" keyword here, why?Cant we just say "someInt = 0"?
for(var i=0;i<this.someArray.length;i++){//and here..
var c = this.someArray[i];//again we use "this"
this.someInt += c.value;//also here
}
那为什么我们使用“this”关键字?我们只能输入变量的名称?
答案 0 :(得分:5)
this
关键字是指稍后调用该对象的对象,即如果您调用此函数:
someObject.Total()
然后this
将引用函数内的someObject
。感谢this
关键字,该功能可以修改someInt
并从someArray
读取someObject
成员this
。如果从函数体中删除{{1}},那么所有这些引用都将是全局变量或函数体本地的变量。
答案 1 :(得分:3)
不,语句someInt = 0
不会修改someInt
的{{1}} 属性。相反,它会修改全局/默认对象(浏览器中的someObject
)上名为someInt
的属性,这显然不是您想要的。
请注意(取决于您打算如何调用window
函数),您也可以将其写为Total
。但是,当调用这样的函数时:
someObject.someInt
...函数中someObject.Total()
的值等于this
。
答案 2 :(得分:1)
不,因为变量未完全创建。通过使用'this'关键字,您可以从自身访问变量。
答案 3 :(得分:0)
在我看来,这只是为了清晰起见。当你不对实例变量和局部变量使用特殊的命名约定时,总是使用this.
可能是一个很好的做法(在其他语言中也是如此,而不仅仅是javascript)。
即使在这种情况下可能不需要,但如果你有一个更大的函数,有很多本地变量和实例变量,那么当你区分时它会更加清晰。
答案 4 :(得分:0)
事实上,道格拉斯·克罗克福德在他的Javascript The Good Parts
中建议不要在代码中使用这个关键字,因为来自对象的函数可能会应用于其他对象,这可能会导致错误。所以有时候只使用变量名更好。
答案 5 :(得分:0)
someInt
被定义为someObject
的属性。它需要被定义为变量才能以这种方式访问它。
答案 6 :(得分:0)
详细了解this