課程
/前端開發
/JavaScript
/使用vue2.0實現購物車和地址選配功能
為啥$http.里面的this要重新指定呢,我再$http里面打印this,跟在外面打印this結果是一樣的呀。
2017-07-06
源自:使用vue2.0實現購物車和地址選配功能 3-1
正在回答
你寫成vm也是正確的,代表渲染整個app里面的內容,這里的this指向也是指向new Vue
因為$http是異步的,所以取不到外面的vm,參考js里this的四種指向問題,像點擊事件內部的this,定時器內部this都是取不到外面的this值的
可以參考下面的例子:
/*5*/ "use?strict"; var?xiaoming={ name:"xiaoming", birth:2007, age:function(){ function?getAge(){ var?y=new?Date().getFullYear(); ????return?y-this.birth; } return?getAge(); } }; xiaoming.age();//es6.html:426?Uncaught?TypeError:?Cannot?read?property?'birth'?of?undefined console.log(xiaoming.age());//在非strict模式下:NaN //這是因為this指針只在age方法的函數內指向xiaoming,在函數內部定義的函數又指向undefined(在非strict模式下,它重新指向全局對象window!)。 /*6*/ ???//修復方法:用一個that變量首先捕獲this。 ????"use?strict"; var?xiaoming={ name:"xiaoming", birth:2007, age:function(){ var?that=this;//一開始就捕獲this,可以放心地在其他方法內部定義其他函數,而不是吧所有的語句都寫在同一個方法中。 function?getAge(){ var?y=new?Date().getFullYear(); ????return?y-that.birth; } return?getAge(); } }; //?xiaoming.age(); console.log(xiaoming.age());//10
因為作用域的問題,有時候指向會不同。具體是否重新指定要看情況來定
舉報
本視頻教程結合案例完整貫穿各個知識點,輕松玩轉vue2.0框架
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-03-15
你寫成vm也是正確的,代表渲染整個app里面的內容,這里的this指向也是指向new Vue
2017-09-12
因為$http是異步的,所以取不到外面的vm,參考js里this的四種指向問題,像點擊事件內部的this,定時器內部this都是取不到外面的this值的
2017-07-20
可以參考下面的例子:
2017-07-06
因為作用域的問題,有時候指向會不同。具體是否重新指定要看情況來定