javascript - 为什么我不能将 IIFE 与 "this"一起使用?

标签 javascript jquery

我的测试代码:

var colorChanged = function (c) {
  //valid syntax:
  (function (x) {
    x.css('color', '#f00')
  })($('.' + c));

  //invalid syntax:
  (function (this) { //Uncaught SyntaxError: Unexpected token this        
    this.css('color', '#f00')
  })($('.' + c));  
};

<div class="demo">Div text</div>
<button onclick="colorChanged('demo')">Change color</button>

我会引用Immediately-invoked function expression但它没有提到在本例中使用 this

我的问题是:有没有办法在示例中使用 this 作为元素 (this = $('.' + c))?

最佳答案

是的,有一种方法可以在 IIFE 中使用 this,您可以在调用 IIFE 之前使用 bind() 绑定(bind) thisValue .

(function() {
    this.css('color', '#f00')
}).bind($('.' + c))();  

关于javascript - 为什么我不能将 IIFE 与 "this"一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34172799/

相关文章:

javascript - 在 AngularJs 服务中从 Web Api 接收数据时出现问题

javascript - 将基于 Javascript 的背景动画限制为某些特定的 Div

javascript - 带有 AWS ElastiCache Redis 的 SignalR 背板失败

javascript - Web SQL 无法从本地文件系统运行,如何在没有任何服务器的情况下运行?

javascript - 单击重置按钮时重置选择框同位素组合

javascript - 在 Id javascript 中选择一个类

javascript - 具有动态填充和元素计数的 Flexbox 未正确调整大小

jquery - 在 jQuery 中使用单个表达式选择同级的子级

javascript - 用 "and"替换字符串中的最后一个逗号

javascript - 执行 AJAX 请求的问题