javascript - 这在全局范围内

标签 javascript node.js

声明:

for( var item in this){
    console.log( item );
}

在全局上下文中是一个 noop。然而在函数中

function foo(){
    for( var item in this){
        console.log( item );
    }
}
foo();

这会产生全局环境对象。 这种行为的原因是什么?

与第一个示例一样,访问当前范围内对象的语法是什么?

最佳答案

在JavaScript中,“this”不是当前对象,而是当前方法的运行上下文。

例如:

function foo(){ 
   console.log(this);
}

在全局范围内:

  • 如果我调用foo(),控制台日志global
  • 如果我调用 setTimeout(foo, 0),控制台会记录 Timer 对象,因为 foo 是由计时器调用的。

调用方法的最佳方式是在调用方法时使用 Function 对象的 call 方法为自己绑定(bind)运行上下文。

foo.call(this);

抱歉我的英语不好。 ^-^

关于javascript - 这在全局范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13370913/

相关文章:

php - ajax/php 文件下载不工作?

php - 将 mySQL 数据库信息放入 JavaScript 数组

javascript - 使用angular-ui-router的angular js Controller 不起作用?

Node.js WebSockets 发送消息

javascript - 将 http 请求保存在变量中

node.js - 安全地从 (node - express - mongodb) 获取数据库结果到 Angular 4

node.js - express3 - 尝试路由文件

javascript - extjs 3.4 在 from 字段中添加工具提示

Node.js 网络事件不会触发

javascript - 在 {} 对象创建中引用其他属性