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

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

如何在回調中訪問正確的`this`?

如何在回調中訪問正確的`this`?

楊魅力 2019-05-20 15:07:27
我有一個構造函數,它注冊一個事件處理程序:function MyConstructor(data, transport) {    this.data = data;    transport.on('data', function () {        alert(this.data);    });}// Mock transport objectvar transport = {    on: function(event, callback) {        setTimeout(callback, 1000);    }};// called asvar obj = new MyConstructor('foo', transport);但是,我無法data在回調中訪問已創建對象的屬性。它看起來this并不是指創建的對象,而是指另一個對象。我還嘗試使用對象方法而不是匿名函數:function MyConstructor(data, transport) {    this.data = data;    transport.on('data', this.alert);}MyConstructor.prototype.alert = function() {    alert(this.name);};但它表現出同樣的問題。如何訪問正確的對象?
查看完整描述

6 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

我們不能將setTimeout()它綁定到,因為它總是用全局對象(Window)執行,如果你想this在回調函數中訪問上下文,那么通過使用bind()我們可以實現的回調函數:

setTimeout(function(){
    this.methodName();}.bind(this), 2000);


查看完整回答
反對 回復 2019-05-20
  • 6 回答
  • 0 關注
  • 959 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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