關(guān)于new了之后的返回值情況
function?C(){ ? this.a?=?99; ? return?{a?:90}; ? } ? ? var?o?=?new?C();//s輸出的o?是這個結(jié)果Object?{a:?90}
看這個我試了一下之后,O的返回值就是前面函數(shù)里面的那個return里面的值
但是!?。】聪旅孢@個
function?foo(){ ? this.b?=?10+b; ? return?this.a; ? } ? var?b?=?100; ? var?l?=?new?foo();//輸出是foo?{b:?110}
為什么這里的返回的不是return里面的那個值???什么鬼
這兩個情況有什么區(qū)別?因為我就是看到老師那一節(jié)bind和new結(jié)合的那個看不太懂
2017-04-16
new操作符應(yīng)該會影響this的值,同時,如果函數(shù)體里沒有return語句或者返回的是一個基本類型的值時,就將這個this的值作為返回值,但是返回的是一個對象,那么就將這個對象作為返回值返回。在這里,首先會創(chuàng)建一個新的對象,然后將這個this指向這個空對象,然后執(zhí)行b的語句操作,最后返回這個對象,這個對象包括了b的值。
2016-12-05
用new之后,如果return 的是一個對象,例如第一個return{a:99},那么返回這個對象,如果return不是對象例如第二個return this.a那么會返回this,此時this會初始化為一個空對象。這個this.b?=?10+b;意思是把空對象this的b屬性設(shè)置為10+b.
2016-10-19
因為之前return了一個b = 10+b;
如果new一個,前面已經(jīng)運行了一個全局變量b=100;所以l返回的foo的b是是100+10=110