欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中的方法調(diào)用詳細(xì)介紹

 更新時(shí)間:2014年12月30日 08:50:08   投稿:junjie  
這篇文章主要介紹了JavaScript中的方法調(diào)用詳細(xì)介紹,JavaScript中,如果function屬于一個(gè)對(duì)象,那么通過(guò)對(duì)象來(lái)訪問(wèn)該function的行為稱之為“方法調(diào)用”,需要的朋友可以參考下

JavaScript中,如果function屬于一個(gè)對(duì)象,那么通過(guò)對(duì)象來(lái)訪問(wèn)該function的行為稱之為“方法調(diào)用”。與普通的函數(shù)調(diào)用不同的是,在進(jìn)行方法調(diào)用時(shí),function中的this指代將發(fā)生變化 — this將指代用于調(diào)用該function的對(duì)象(該對(duì)象將成為方法調(diào)用的invocation context):


復(fù)制代碼 代碼如下:

var x = 99;
var sample = {
  x:1,
  act:function(a){
    this.x = a*a;//assign value to sample's x, not global object's x.
  }
}
sample.act(6);
console.log(sample.x);//36
console.log(x);//99


與訪問(wèn)對(duì)象中的property一樣,除了使用點(diǎn)號(hào)操作符,JavaScript中還可以通過(guò)使用中括號(hào)操作符來(lái)進(jìn)行方法調(diào)用:


復(fù)制代碼 代碼如下:

//other ways to invoke method
sample["act"](7);
console.log(sample.x);//49


對(duì)于JavaScript中的function,一個(gè)比較有趣的行為是可以在function中嵌入function(閉包)。在進(jìn)行方法調(diào)用時(shí),如果方法function中有嵌入的function,那么這個(gè)嵌入的function中的代碼可以訪問(wèn)到外部的變量值:


復(fù)制代碼 代碼如下:

//nested function can access variable outside of it.
var y = 88;
var sample2 = {
  y:1,
  act2:function(a){
    this.y = inner();
    function inner(){
      return a*a;
    }
  }
}
sample2.act2(8);
console.log(sample2.y);//64
console.log(y);//88


不過(guò),與直覺(jué)相反的是,嵌入function中的代碼無(wú)法從外部繼承this;也就是說(shuō),在嵌入的function中,this指代的并不是調(diào)用方法的對(duì)象,而是全局對(duì)象:


復(fù)制代碼 代碼如下:

//nested function does not inherit "this". The "this" in nested function is global object
var sample3 = {
  act3:function(){
    inner();
    function inner(){
      console.log(this);//window object
    }
  }
}
sample3.act3();


如果確實(shí)需要在嵌入function中訪問(wèn)到調(diào)用方法的對(duì)象,可以在外部function中將this值保存到一個(gè)變量中:


復(fù)制代碼 代碼如下:

//pass "this" to nested function
var sample4 = {
  act4:function(){
    var self = this;
    inner();
    function inner(){
        console.log(self);//Object {act4=function()}
    }
  }
}
sample4.act4();

相關(guān)文章

最新評(píng)論