javascript中的this

var name = "Bob";
var nameObj ={
    name : "Tom",
    showName : function(){
        alert(this.name);
    },
    waitShowName : function(){
        setTimeout(this.showName, 1000);
        setTimeout(function(){
            nameObj.showName()
        }, 1000);
  }
};
nameObj.waitShowName();

一般而言,在Javascript中,this指向函数执行时的当前对象

The this keyword is relative to the execution context, not the declaration context.

  • 当没有明确的执行时的当前对象时,this指向全局对象window。
            var obj = {
                 bar: "bar",
                 foo: function(){
                     console.log(this);
                 }
             };
             obj.foo();
             var bar = obj.foo;
             bar()
  • 在浏览器中setTimeout、setInterval和匿名函数执行时的当前对象通常是是全局对象window,当然也有例外


    foo(function (){
        console.log(this)
    });


    function foo(fn){
            fn.call({});
        }

    //el.addEventListener('click', bar, false);

*eval函数 指向当前执行环境

var name = "window";

var Bob = {
    name: "Bob",
    showName: function(){
        eval("alert(this.name)");
    }
};

Bob.showName();    //Bob

当然还有很多很多例子,
涉及 new 还有es5中的 call,apply,bind, 以及es6中的() => {} lambda
有趣的例子(λx.x*x)(λx.x+2) js可以写成 (x => x + 2)((x => x * x)(2))
不一一列举了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Javascript 中的 this,有时候让人迷惑,所以总结了一下关于this指向的问题。 在函数中 this ...
    lxt410725阅读 3,276评论 0 1
  • 1.函数调用栈和调用位置 在函数执行的时候,会有一个活动记录(也叫执行上下文)来记录函数的调用顺序,这个就是函数调...
    lightNate阅读 3,602评论 1 14
  • this this是javascript的一个关键字,随着函数使用场合不同,this的值会发生变化。但是总有一个原...
    西瓜w阅读 3,017评论 0 0
  • 本来不想写this的东西,因为实在是头晕啊,讲不清楚,JavaScript中的this真是让人抓狂,好在我们调试的...
    转角遇见一直熊阅读 5,872评论 11 39
  • 2017年9月13日(连续第212天总结) 今日目标完成情况: 1:案例 100% 2:抄写概念5遍 100%...
    我来学而时习之阅读 1,850评论 0 0

友情链接更多精彩内容