先貼上**
上述**中,我們先在全域性環境中定義了乙個變數x,賦值為1;
然後我們定義乙個物件k,物件k裡包含兩個區域性變數x和fn;
此時我們都知道這兩個x互不干擾,它們的作用域不同;
k中定義的變數fn,我們將它指向乙個函式,內容是列印出this.x;
然後我們執行k.fn(),定義乙個全域性變數j,將物件k賦值給j;
再定義乙個全域性變數l,將k中的屬性fn賦值給l;
然後我們看看結果 --------->>>>>>
我們可以看到console出來的四個結果。
第乙個結果是在全域性變數x定義後立刻console的this.x的值,值為1,很明顯,此時的this指向的是整個window,是整個全域性環境。
第二個結果是我們在定義了物件k,並將k的屬性fn賦值成乙個 console.log(this.x) 函式後,呼叫了k.fn()後的值,值為10,為什麼這裡的值和第乙個值不一樣呢?很明顯是this所代表的物件發生了改變,此時的this代表的是物件k。
第三個結果是我們將物件k賦值給j,呼叫j.fn()後,值為10。
第四個結果是我們將k.fn()賦值給l,這裡我的理解是,var l = k.fn 可以看作是 var l = function()。然後console的結果是10。
我們可以得出乙個結論:誰呼叫了this,那麼this就指向誰,比如第乙個結果,呼叫this的是全域性環境,那麼this指向的就是全域性,this.x等於1。第
二、三個結果,呼叫this的是物件k,那麼this指向的就是物件k,this.x等於10。第三個結果,因為var l = k.fn 可以看作是 var l = function()。所以呼叫this的是全域性,所以this.x等於1。
總結一下:
**誰呼叫了this,那麼this就指向誰
**記住這個觀點,應該就不會再出錯了~
python python中not的用法總結
exp對應邏輯強轉結果 not exp邏輯運算結果 none 無 false true false false true 0false true 空字串 false true 空列表false true 空字典 false true 空元組 false true true true false 其他...
關於C 中 map 的意義以及用法
map,顧名思義就是地圖。其實就是key,value的對應。當你需要快速的獲取對應key的value的時候,就可以使用map了。例如乙個人是有名字,但是這個人還有其他的屬性,例如年齡,性別等等。這個人就會被封裝為乙個物件。如果有很多個人,我們需要快速的根據乙個人的名字獲取對應名字的物件,這個時候ma...
JS中call,apply,bind方法的總結
一般用來指定this的環境,在沒有學之前,通常會有這些問題。var a var b a.fn b undefined 我們是想列印物件a裡面的user卻列印出來undefined是怎麼回事呢?如果我們直接執行a.fn 是可以的。var a a.fn 小馬扎 這裡能夠列印是因為,這裡的this指向的是...