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

為了賬號安全,請及時綁定郵箱和手機立即綁定

為啥$http.里面的this要重新指定呢,我再$http里面打印this,跟在外面打印this結果是一樣的呀。

為啥$http.里面的this要重新指定呢,我再$http里面打印this,跟在外面打印this結果是一樣的呀。

正在回答

4 回答

你寫成vm也是正確的,代表渲染整個app里面的內容,這里的this指向也是指向new Vue

0 回復 有任何疑惑可以回復我~

因為$http是異步的,所以取不到外面的vm,參考js里this的四種指向問題,像點擊事件內部的this,定時器內部this都是取不到外面的this值的

1 回復 有任何疑惑可以回復我~

可以參考下面的例子:

		/*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


0 回復 有任何疑惑可以回復我~

因為作用域的問題,有時候指向會不同。具體是否重新指定要看情況來定

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
使用vue2.0實現購物車和地址選配功能
  • 參與學習       96803    人
  • 解答問題       499    個

本視頻教程結合案例完整貫穿各個知識點,輕松玩轉vue2.0框架

進入課程

為啥$http.里面的this要重新指定呢,我再$http里面打印this,跟在外面打印this結果是一樣的呀。

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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