首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript匿名函数中的此值

JavaScript匿名函数中的此值
EN

Stack Overflow用户
提问于 2011-12-30 01:07:05
回答 2查看 27.4K关注 0票数 33

谁能给我解释一下为什么A是真的,而B是假的?我本以为B也是真的。

代码语言:javascript
复制
function MyObject() {

};

MyObject.prototype.test = function () {
    console.log("A", this instanceof MyObject);
    (function () {
        console.log("B", this instanceof MyObject);
    }());
}

new MyObject().test();

更新:从ecmascript-6开始,您可以使用箭头函数,这样可以很容易地引用MyObject:

代码语言:javascript
复制
function MyObject() {

};

MyObject.prototype.test = function () {
    console.log("A", this instanceof MyObject);
    (() => {//a change is here, which will have the effect of the next line resulting in true
        console.log("B", this instanceof MyObject);
    })(); //and here is a change
}

new MyObject().test();    
EN

回答 2

Stack Overflow用户

发布于 2011-12-30 01:09:20

在匿名函数中,this绑定到全局对象(浏览器环境中的window)。

访问实例的方式有多种:

代码语言:javascript
复制
var self = this;
(function () {
    console.log("B", self instanceof MyObject);
}());

代码语言:javascript
复制
(function () {
    console.log("B", this instanceof MyObject);
}).call(this);
票数 10
EN

Stack Overflow用户

发布于 2011-12-30 01:09:11

this根据您调用函数的方式进行设置。

您的匿名函数是一个普通的函数调用,所以this是全局对象。

您可以编写(function() { ... }).call(this)以使用this显式调用它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8670877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档