1. 程式人生 > >Javascript 中的this指向

Javascript 中的this指向

hat log bsp fin span func fun efi script

1、作為對象的方法調用,this值當前對象

   var obj={
         name:"xiao",
          getName(){
this.name //xiao } }
obj.getName();

2、作為普通函數調用 this指向window, 當一個函數體 ,自執行時,裏面的this指向window,若想改變this 可以var that = this

  var obj={
         name:"xiao",
          getName(){

            
this.name //xiao } } var fn = obj.getName fn();//undefined

3、構造函數調用時 指new的對象

function fn(name){
     this.name=name  
     return {
        name:‘bb‘
    }
}

var obj =new fn(‘gg‘)

obj.name//  bb  this指返回的對象

還有一種情況如果此時構造函數 顯示的返回一個對象的話 那麽this指向 返回的對象 而不是new的對象

所以,如果構造函數返回一個非對象類型數據的話,就不會造成上面的問題

4、call ,apply

它們倆都是強制改變this指向,它們都是接受兩個參數,第一個則是this,第二個是參數,

apply要求第二個參數是一個集合 數組或者類數組,call則是單個參數,call一般用於參數確定的情況,apply則用於參數不確定的情況

Javascript 中的this指向