在JavaScript中this對象上下文做用域

1:在函數調用模式中,例如:app

     function ninja(){};函數

     ninja();this

     var samurai = function() {};對象

     samurai();作用域

這個函數的this做用域全局上下文即Windows對象io

2:在方法調用模式中,例如:console

     var o = {};function

     o.whatever = function () {};構造函數

     o.whatever();方法

這個函數的this做用域的上下文就是這個對象

3:在構造器調用模式中,例如:(注意:構造函數首字母大寫)

     function Ninja(){

         this.skulk = function(){ return this;}

     }

     var ninja1 = new Ninja();

     var ninja2 = new Ninja();

     assert(ninja1.skulk() === ninja1, "The 1st ninja is skulking");

     assert(ninja2.skulk() === ninja2, "The 2nd ninja is skulking");

this做用域的上下文就是爲建立的新對象

4:apply/call調用模式中,例如:

     function forEach(list, callback){

          for (var n = 0; n < list.length; n++){

               callback.call(list[n], n);

          }

     }

     var list = ['shuriken', 'katana', 'nunchucks'];

     forEach(list,function(index){

          console.log(index);

          console.log(this);

          assert(this == list[index], "Got the expected value of 「+ list[index]);   

     })

this做用域的上下文能夠是咱們指定的任何對象

相關文章
相關標籤/搜索