JavaScript中的this

前段時間回答的一個關於this的問題,便總結記錄下。
在javascript的函數中,除了聲明時定義的形參以外,每一個函數還能夠接收兩個附加的參數:this和arguments。這裏就講一下this的做用以及不一樣場景下它的不一樣指向。this的取值(即它的指向取決於調用的模式),在javascript中明確this指向大體有四種狀況:javascript

1.函數調用模式的時候,this指向windowjava

function aa(){
  console.log(this)
}
aa()                 //window

2.方法調用模式的時候,this指向方法所在的對象segmentfault

var a={};
a.name = 'hello';
a.getName = function(){
  console.log(this.name)
}
a.getName()         //'hello'

3.構造函數模式的時候,this指向新生成的實例app

function Aaa(name){
  this.name= name;
  this.getName=function(){
    console.log(this.name)
  }
}
var a = new Aaa('kitty');
a.getName()        //  'kitty'
var b = new Aaa('bobo');
b.getName()        //  'bobo'

4.apply/call調用模式的時候,this指向apply/call方法中的第一個參數函數

var list1 = {name:'andy'}
var list2 = {name:'peter'}

function d(){
  console.log(this.name)
}
d.call(list1)     //  'andy' 
d.call(list2)     //  'peter'
相關文章
相關標籤/搜索