關於js函數調用方法call(this)的簡單分析


今天發現了this的一個奇妙作用,那就是在call中和apply中指代的都是全局。見下代碼:

 

var money= "想要擁有一個億"
       var obj1={
            money:"我擁有一個億",
            foo:function() {
                console.log(this.money);
            }
       }
       var obj2={
           money:"同桌擁有一個億"
       }
    obj1.foo(); //我擁有一個億
    obj1.foo.call(this) //你猜是什么?? 刮開圖層查看答案
obj1.foo.call(obj2) //同桌擁有一個億

obj1.foo() 指向obj1下的foo,因此直接打印“我擁有一個億”。

call函數修改函數內部this值指向

obj1.foo.call(this) 由於有了call,因此指向全局,將打印“想要擁有一個億”

obj1.foo.call(obj2) ,由於有了call,因此指向obj2,將打印“同桌擁有一個億”

 

 

 

this
this的指向跟函數調用有關
如果函數使用"()"來調用,那看一下括號前面是不是函數名,如果是,看函數名前面有沒有對象
有,this指向該對象
沒有,
Nodejs環境中 this --> global對象
瀏覽器環境中 this --> window對象
nodejs中的this和在瀏覽器中javascript中的this是不一樣的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM