javascript - 学习Javascript : "this" keyword vs "arguments" object

标签 javascript arguments this

新手,想了解thisarguments有何不同,以及在什么情况下使用其中一个而不是另一个?

例如,这个原型(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 将引用 myObjthis 的值有时可能很棘手。例如,假设您这样做了:

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/

相关文章:

javascript - 如何在 Extjs 3.2 上使用卡片布局创建高级向导表单?

r - 使用 multidplyr 在 dplyr::do 中调用带参数的函数

c - 函数的参数是指向声明为 const 的参数的指针,如何处理?

javascript - 了解 Box : this, 推送和弹出的 Matter.js 代码

c# - 是什么导致我的构造函数中的 "this"指针为空?

c++ - 重载和 this 指针

javascript - iOS 和 Android PhoneGap 应用的订阅模式

javascript - 在文本中的文本区域中显示文件名

javascript - 如何在模板文字中呈现 html?

reactjs - React 函数式组件中的参数而不是 Props