js閉包中this的指向問題及三種解決方法

2021-08-25 14:03:22 字數 696 閱讀 1527

下面是乙個問題,物件方法中定義的子函式,子函式執行時this指向**?

三個問題:

(1)以下**中列印的this是個什麼物件?

(2)這段**能否實現使mynumber.value加1的功能?

(3)在不放棄helper函式的前提下,有哪些修改方法可以實現正確的功能?

var mynumber = 

helper(i);

}}mynumber.add(1);

1.this指向window物件(因為匿名函式的執行具有全域性性,所以其this物件指向window);

2.不能實現value加1(每個函式在被呼叫時都會自動取得兩個特殊變數,this和arguments,內部函式在搜尋這兩個物件時,只會搜尋到其活動物件為止,所以不能實現訪問外部函式的this物件);

3.修改**實現正確功能

方法一:

var mynumber=

helper(i);

}}mynumber.add(1);

方法二:

var mynumber=

}}mynumber.add(1);

方法三:

var mynumber=

}mynumber.add(1);

JS閉包中的this問題

首先看一段 var obj var c obj.get console.log c 那麼輸出c的值為多少呢?看下圖 這說明obj.get 只是返回乙個匿名函式,並沒有執行。所以轉到this,相應的 為 var name ss var obj var val obj.get console.log v...

js中this的指向 作用域和閉包

1 this在執行的時候才會確定指向的是什麼,不執行無法確定。this的幾種不同的使用場景 建構函式 物件屬性 普通函式 建構函式 this先指向乙個空物件,再對this賦值,最後返回this function foo name this.name name return this var a ne...

javascript閉包中的this指向問題

關於this物件,它是基於當前執行環境所繫結的 var name the window var object console.log object.getname the window 每個函式在被呼叫時都會自動取得兩個特殊變數 this和arguments。內部函式在搜尋這兩個變數時,只會搜尋到其...