内部函数的此函数在通过调用进行调用时

阿德里安·巴兰(Adrian Baran)|

我有以下代码:

var outer = function(){
    var that = this;
    function inner(){
        assert(this===that, "Inner === Outer");
        console.log(this);
        console.log(that);
    }
    inner();
    return this;
};

outer();
var obj = {};
outer.call(obj);

执行第一次调用时-external()。一切对我来说都很清楚-外部在窗口上下文以及===窗口中被调用。然后,当我调用外部调用函数be时,事情就变得混乱了。那=== obj,这很明显,但是为什么这===窗口呢?

氏族

因为您通过引入闭包而失去了上下文。this仅取决于您如何调用函数与对象方法一样,它可以是隐式的。您的代码inner中没有任何上下文调用,因此默认为window你可以这样做:

var outer = function(){
    var that = this;
    function inner(){
        assert(this===that, "Inner === Outer");
        console.log(this);
        console.log(that);
    }
    inner.call(this); // explicit context
    return this;
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

内部函数的此调用调用时

来自分类Dev

在函数内部调用时clusterApply的性能下降

来自分类Dev

在函数内部调用时,clusterApply的性能下降

来自分类Dev

通过HammerJS调用时函数未运行

来自分类Dev

从函数内部调用时未发生Magento调用

来自分类Dev

在构造函数内部调用时,函数返回nil

来自分类Dev

从函数内部调用函数

来自分类Dev

从函数内部调用函数

来自分类Dev

从函数内部调用函数?

来自分类Dev

函数调用时出错

来自分类Dev

JavaScript揭示模块模式-此函数和内部函数调用

来自分类Dev

无效的挂接调用。挂钩只能在函数组件的主体内部调用,在进行函数调用时会收到此错误

来自分类Dev

在函数内部调用时,ThreadPoolExecutor不使用多个工作程序

来自分类Dev

在BASH脚本中的函数内部调用时未找到SUDO

来自分类Dev

在函数内部调用时,ajax无法正常工作

来自分类Dev

通过此指针从静态函数调用类函数

来自分类Dev

通过函数调用进行模式匹配

来自分类Dev

通过类递归进行函数调用?

来自分类Dev

通过函数调用PHP进行编辑

来自分类Dev

通过类递归进行函数调用?

来自分类Dev

从基类函数内部进行虚函数调用

来自分类Dev

通过变量名称在函数内部的JavaScript调用函数

来自分类Dev

如何仅通过HTML调用函数内部的函数

来自分类Dev

调用JSX内部的函数

来自分类Dev

javascript调用内部函数

来自分类Dev

在Map函数内部调用函数

来自分类Dev

快速调用内部函数的函数

来自分类Dev

通过JavaScript函数调用时,Fancybox iframe无法正常工作

来自分类Dev

R函数仅在通过我的包调用时失败