Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

以为是基于mod调用,this会指向mod。然而实际是指向全局对象。。。不太能理解,应该怎么分析

    var mod ={};

    mod.load = function(func){
        func();
    };

    mod.load(function(){
        console.log(this);
    })

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
269 views
Welcome To Ask or Share your Answers For Others

1 Answer

其实要判断this的指向就是判断this所在的函数属于谁(非严格模式下)

  1. 有对象的就指向对象

  2. 没有调用对象的就指向全局对象

  3. new构造的就值向新的对象

  4. 可通过applycallbind来改变this的指向

window.name = 'testWindow';

var mod = { };
mod.name = 'testObjSelf';

mod.load = function(func){
    func();
    console.log(this.name);    //指向mod,对象本身的一个方法
};

mod.load(function(){
    console.log(this.name);    
//指向window,该函数虽然定义在load函数体内,但并没有绑定在任何对象上,所以当调用时,它的this指针指了全局对象
})    

推荐博客地址
书籍推荐《javascript设计模式与开发实践》、《JavaScript语言精髓与编程实践》


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...