JavaScript:什么是全局对象, "this"指的是哪里?

标签 javascript

我了解到在函数调用中,this 将引用全局对象。在下面的函数中,哪个是全局对象?

是函数还是 this 将引用的单个默认全局对象?除此之外,这段代码实际上做了什么?我对 method 占位符特别困惑。是否必须用 Function.prototype 中预先存在的方法替换它?

this.prototype[name] = func; 行中,它指的是哪个属性,是方法的还是 Function.prototype 的?

Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
    return this;
};

最佳答案

this关键字引用当前对象,如果函数作用域是全局命名空间,则当前对象是全局对象,即window对象如果环境是浏览器。

当您向Function 类添加方法时,this 关键字将引用您调用method 方法的函数on,因此它将返回函数本身,以便可以链接调用。

这会将函数 F 声明为构造函数,创建类型为 F 的对象,将函数 x 添加为方法F 并将其命名为xx,然后使用对象f 调用xx,这实际上是x:

function F() {}
function x() { alert(1); }

var f = new (F);
F.method('xx', x);
f.xx();

所以,这个:

F.method('xx', x).method('yy', y);

等同于:

F.prototype.xx = x;
F.prototype.yy = y;

关于JavaScript:什么是全局对象, "this"指的是哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3758452/

相关文章:

javascript - React 似乎在浏览器中渲染之前转义了 HTML,导致它在页面中显示为代码

javascript - 滚动顶部 Jquery

javascript - CSS 问题,自动更正宽度

javascript - 移动包含 youtube 视频的 iframe onresize

javascript - Facebook SDK - 控制台中的警告 "Received message of type number from http://localhost:8080, expected a string"

javascript - 是否可以在引用索引的循环中调用 jQuery 中的变量

带有自定义 Google map 标记/放置动画的 Javascript

javascript - 视口(viewport)分辨率自行改变

javascript - Socket.io-client 简单客户端/服务器测试无法连接 - Node.js

javascript - 设置三个 express 实例 : admin, 站点和应用程序