搜索
javascript - 有关于上下文,即this指向的问题?
某草草
某草草 2017-07-05 10:56:18
[JavaScript讨论组]

直接上代码:

var test = {
  outer: function () {
    // 此时this指向test对象
    console.log(this);
    
    function inner() {
      // 此时this指向window
      console.log(this);
    }
    inner();
  }
}

造成上述代码this指向不同的原因是什么呢?

到现在都是很明白,求大神解答!

某草草
某草草

全部回复(5)
大家讲道理

抛出函数借用和构造函数,就剩两种,一种是普通函数,一种是对象方法。

对象方法指向对象,普通函数指向全局

曾经蜡笔没有小新

谁调用了这个函数,那么this就指向谁。

this的指向只和你如何调用这个函数有关,比如你说第一个this指向test,这可不一定,有的是办法把这个this的指向改掉。只有当你运行test.outer()的时候,第一个this才会指向test

PHP中文网

/a/11...

女神的闺蜜爱上我

这是闭包问题,在给一个对象通过对象字面量进行了赋值属性 其中包括一个函数方法,这个函数方法有个控制台输出,然后这个函数里面又声明一个函数形成了闭包问题,闭包在一般情况下this都是指向window的.有特殊情况可以改变this的值 你可以看看我写的一篇有关闭包的文章 你会有收获的 手机不方便贴 你可以看我个人资料

巴扎黑

其实把匿名回答的都不对!在对象里函数内部定义的函数,是不能直接获取上一级环境变量的 ,更不能直接得到里面的this 要对她定义变量 比如 var that=this;这也你就能拿到上级的this对象;
var test = {

    outer: function () {
        // 此时this指向test对象
        var that=this
        console.log(this);

        function inner() {
            // 此时this指向window
            console.log(that);
        }
        inner();
    }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号