javascript - "this"在函数的调用语句中作为另一个函数的方法引用什么

标签 javascript

如果我看到带有这样的构造函数的代码:

function F(){}
F.prototype.k = "v";

function F2(){
    F.call(this);
}

这里的“这个”指的是什么?我有点迷失了。是F2还是F?

最佳答案

任何函数中的

this 都是由函数的调用方式决定的,并且您没有显示 F2() 是如何调用的,但是这段代码正在做的是说无论 F2 中的 this 设置为何,在执行 F() 时对 this 使用相同的值。

  1. 如果像 F2() 一样调用 F2(),则 this 将是全局对象 (window(在浏览器中)或未定义(如果在严格模式下运行)。

  2. 如果 F2 的调用方式如下:

    var obj = new F2();

    然后,this 将被设置为新创建的 F2 实例。

  3. F2.apply(x)F2.call(x) 方法可以确定 this 将设置为什么根据您作为第一个参数传递的内容在给定函数中。

  4. 如果它是 obj.method() 中的方法调用,则 this 将设置为 obj

关于javascript - "this"在函数的调用语句中作为另一个函数的方法引用什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24542331/

相关文章:

Javascript 创建范围。如何只用一个脚本选择不同的跨度?

javascript - 如何限制D3条形图中的最大宽度

javascript - Bootstrap 导航栏顶部的图像

javascript - 如何在 javaScript 中使用 indexof 从倒数第二个索引中获取字符?

javascript - 正则表达式 JavaScript : Remove single charcaters in Text

javascript - React bootstrap 重复模态组件

javascript - 当哈希值未更改时异步 onHashChange 触发

javascript - Vue.js - 显示 JSON 结果无法正常工作

javascript - 有没有更好的方法在一个 html 页面上多次运行 JavaScript?

javascript - 使用 javascript 和 d3js 将 __data__ 从父节点分配给子节点