想把連接websocket的ws export出去后在別的地方拿到resList
push()函數(shù)undefined
陪伴而非守候
2018-10-10 13:15:06
TA貢獻(xiàn)1851條經(jīng)驗 獲得超5個贊
var websocket = {}var ws = { resList: [], socket:null, init: function() { websocket.onopen = function() { var _this = this console.log(_this) } }, } ws.init() websocket.onopen()
在google chrome 的console中cv以上代碼,這是你的代碼簡化版,可以看到輸出的_this指向websock對象,因為此時調(diào)用onopen方法的是websock,符合this的隱式綁定原則;我們把var _this = this 移到init()作用域,就像這樣:
var websocket = {}var ws = { resList: [], socket:null, init: function() { var _this = this websocket.onopen = function() { console.log(_this) } }, } ws.init() websocket.onopen()
再輸出就發(fā)現(xiàn),_this將init()的this帶了進(jìn)來,因為init()由ws調(diào)用,所以他的this指向ws,從而_this也指向ws,符合你的要求
如果你對this綁定有疑問,可以參考我的博客
或者,如果你們使用es6的話,可以使用胖箭頭函數(shù):
var websocket = {}var ws = { resList: [], socket:null, init: function() { websocket.onopen = () => { console.log(this) } }, } ws.init() websocket.onopen()
舉報