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

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

關于new了之后的返回值情況

function?C(){
?		this.a?=?99;
?		return?{a?:90};
?		}
?
?		var?o?=?new?C();//s輸出的o?是這個結果Object?{a:?90}

看這個我試了一下之后,O的返回值就是前面函數里面的那個return里面的值

但是!!!看下面這個

function?foo(){

?			this.b?=?10+b;
?			return?this.a;
?		}
?		var?b?=?100;
?		var?l?=?new?foo();//輸出是foo?{b:?110}

為什么這里的返回的不是return里面的那個值???什么鬼

這兩個情況有什么區別?因為我就是看到老師那一節bind和new結合的那個看不太懂

正在回答

3 回答

new操作符應該會影響this的值,同時,如果函數體里沒有return語句或者返回的是一個基本類型的值時,就將這個this的值作為返回值,但是返回的是一個對象,那么就將這個對象作為返回值返回。在這里,首先會創建一個新的對象,然后將這個this指向這個空對象,然后執行b的語句操作,最后返回這個對象,這個對象包括了b的值。

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

前端小蝸牛_

就個人認為,使用了new關鍵字去實例化一個函數時,壓根不會管你的返回值,如果沒有返回值,就直接創建一個新的空對象并進行返回。。。。待大咖改正
2017-04-16 回復 有任何疑惑可以回復我~
#2

前端小蝸牛_ 回復 前端小蝸牛_

前提是不返回對象的情況...
2017-04-16 回復 有任何疑惑可以回復我~

用new之后,如果return 的是一個對象,例如第一個return{a:99},那么返回這個對象,如果return不是對象例如第二個return this.a那么會返回this,此時this會初始化為一個空對象。這個this.b?=?10+b;意思是把空對象this的b屬性設置為10+b.

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

因為之前return了一個b = 10+b;

如果new一個,前面已經運行了一個全局變量b=100;所以l返回的foo的b是是100+10=110

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

深夏之葉 提問者

為什么不是返回的是a的值
2016-10-19 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于new了之后的返回值情況

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

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

幫助反饋 APP下載

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

公眾號

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