首页 > web前端 > js教程 > 如何在嵌套 JavaScript 函数中保留'this”指针

如何在嵌套 JavaScript 函数中保留'this”指针

DDD
发布: 2024-10-19 06:52:01
原创
345 人浏览过

How to Preserve the

嵌套函数中的 JavaScript“this”指针

在 JavaScript 中,使用嵌套函数时“this”指针的值可能会令人困惑功能。与预期相反,调用嵌套函数可以将“this”指针分配给全局“窗口”对象,而不是封闭的函数。

考虑以下代码:

<code class="javascript">var std_obj = {
  options: { rows: 0, cols: 0 },
  activeEffect: "none",
  displayMe: function() {
    // this refers to std_obj
    if (this.activeEffect == "fade") { }

    var doSomeEffects = function() {
      // this unexpectedly refers to the window object
      if (this.activeEffect == "fade") { }
    };

    doSomeEffects();
  }
};

std_obj.displayMe();</code>
登录后复制

在此场景中,当调用嵌套函数 doSomeEffects 时,“this”指针指向“window”对象,即使它是在 std_obj 范围内声明的。这是因为 JavaScript 根据函数的调用方式来确定“this”指针。

在这种情况下,在没有前导父对象的情况下调用 doSomeEffects,这会产生全局对象(通常是“window”对象) )被分配给“这个”。要解决此问题,可以使用三种方法:

  1. 使用 call 方法调用该函数:

    <code class="javascript">doSomeEffects.call(std_obj);</code>
    登录后复制
  2. 使用 apply 方法应用函数:

    <code class="javascript">doSomeEffects.apply(std_obj, []);</code>
    登录后复制
  3. 创建绑定函数:

    <code class="javascript">var boundDoSomeEffects = doSomeEffects.bind(std_obj);
    boundDoSomeEffects();</code>
    登录后复制

以上是如何在嵌套 JavaScript 函数中保留'this”指针的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板