亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js中this指向(涉及回調函數)

js中this指向(涉及回調函數)

繁星點點滴滴 2018-10-18 18:15:22
常見的說法是js中this指向調用該方法的對象,但是以下情形仿佛并不是這樣var one = {name: "onename", say: function(greet){ return this; }};var test = {name: "testname", method : function(callback){ var self = callback(); console.log(self);}};one.say()輸出如下:這沒有問題,但是test.method(one.say)輸出就比較難以理解了:test.method(one.say)不是應該輸出對象test嗎?怎么就是Window了呢?如果one換成setTimeout是可以理解的,setTimeout是掛在window對象下的方法嘛,但此處情形真心期待大牛們的幫助
查看完整描述

1 回答

?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

函數的this是由運行時決定的,函數作用域鏈是由聲明時決定的。

當函數作為普通變量時,其this指向全局global(window)

當你把one.say傳給test.method作為參數時,此時這個callback就是一個普通變量,所以直接調用,其中的this就是global


查看完整回答
反對 回復 2018-11-22
  • 1 回答
  • 0 關注
  • 572 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號