新手,想了解this
和arguments
有何不同,以及在什么情况下使用其中一个而不是另一个?
例如,这个原型(prototype)函数将使用 this
来执行一些操作:
myObj.prototype.myFunc = function(){
return this.(some manipulation);
}
类似地,arguments
用于循环遍历要操作的每个参数:
function myFunc() {
for (var i = 0, i < arguments.length; i++){
return arguments[i].(some manipulation)
}
}
基本上在这两个示例中,就作为参数访问以进行进一步操作而言,两者似乎可以互换?我一直在 Stack Overflow 上阅读各种解释(例如 this ),但在实践中,我仍然很困惑在应用程序/上下文方面使用哪个。当我在搜索引擎上搜索时,“这个”经常被误解或忽略,可能是因为它出现的频率......
非常感谢任何帮助!
最佳答案
this
是调用该函数的对象。例如,如果您在 foo
范围内调用函数 myObj.foo()
,则 this
将引用 myObj
。 this
的值有时可能很棘手。例如,假设您这样做了:
var fooFn = myObj.foo;
fooFn();
在这种情况下,this
不会引用 myObj
,而是引用全局窗口对象。
简而言之,这就是这个
。
对于参数
,它是传递给函数的所有参数的一个类数组对象(不是真正的数组)。假设您有一个函数function myFn(foo, bar)
。您可以将两个以上的参数传递给 myFn
。如果您调用 myFn(1, 2, 3)
,您将如何访问第三个参数?这就是arguments
的用途。在本例中,arguments
将具有 3 个元素:1(对应于 foo
参数)、2(对应于 bar
参数)和3(额外参数)。
您可以使用arguments
对象来支持函数的重载版本。
关于javascript - 学习Javascript : "this" keyword vs "arguments" object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31526292/