第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

javascript中的this問題,幫幫忙。

javascript中的this問題,幫幫忙。

慕尼黑8549860 2019-04-19 16:29:34
functionA(){this.age=100;}A.prototype={constructor:A,sex:this.age,click:function(){returnthis.age;}};vara=newA();console.log(a.sex);//undefinedconsole.log(a.click());//100為什么a.sex沒有值,而click()卻可以?原理上是怎么回事,最后不都是指向a對象么?A。prototype之后不應(yīng)該等之后不應(yīng)該等同于A.prototype={constructor:A,sex:this.age,click:function(){...}};這樣嗎?寫A.prototype={}的時候,你并沒有去擴展A.prototype,而是用一個新的對象自變量重寫了A.prototype,而這個新的對象字面量創(chuàng)建于window之下,于是里面的this.xxx自然不可能指向你設(shè)想的a?網(wǎng)上看到的解釋,但是不懂什么叫拓展,這樣怎么就成了新的對象自重寫了?
查看完整描述

2 回答

?
qq_花開花謝_0

TA貢獻1835條經(jīng)驗 獲得超7個贊

注釋:新手忽視這一段。以一下說的都是ES5.1且沒有用usestrict在更高的版本中兼容,但是新定義的東西有些許區(qū)別,不過也只是ES5.1的語法糖。(先不討論,call,apply,bind)1、this這個是在運行時,函數(shù)調(diào)用的時候決定次函數(shù)中的this等于什么的。首先函數(shù)是一個對象,跟其他對象/變量沒有本質(zhì)的區(qū)別,所以一個函數(shù)可以賦值給一個變量或是一個對象的屬性,可以通過這個變量或是對象的屬性調(diào)用這個函數(shù)。那么在寫代碼的時候函數(shù)調(diào)用可以分為兩種寫法function_name();object.function_name()后一種包括obj1.obj2.function_name()的形式。第一種寫法this的值是window,第二種情況,this的值就是function_name前面那個對象,而不管你實際的代碼寫在那里,值關(guān)心你調(diào)用函數(shù)時的寫法。但是對于你這種情況,this不在任何函數(shù)中,那么this的值就是window。所以sex的值是window.age也就是undefined,所以,不是不能訪問,而是,就是undefined
了解更多,可以繼續(xù)往下讀。不過不太好理解,多度幾遍。
2、其實還存在一種this其實函數(shù)調(diào)用還存在一種形式,那就是newfunctioin_name()這個時候瀏覽器會創(chuàng)建一個新的對象,并且給這個對象添加用js代碼不可訪問的屬性[[prototype]](先不討論如何訪問他的問題)。這個屬性值就等于function_name.prototype。然后this就等于新創(chuàng)建的對象,然后運行函數(shù)中定義的代碼。new的返回值就是這個新創(chuàng)建的對象(js太麻煩了,先不討論其他情況)。
3、原型鏈上面說道new的時候會創(chuàng)建一個新的對象,并且給一個內(nèi)部屬性賦值為函數(shù)的prototype,所以新創(chuàng)建的這個對象有一個[[prototype]]屬性,某些當然[[prototype]]也可能存在[[prototype]]屬性。那么一個對象就有這樣的屬性obj.[[prototype]].[[prototype]].[[prototype]]...而他的值就是它構(gòu)造函數(shù)的prototype屬性,叫做原型鏈。那么當我們"讀取"對象的屬性的時候,其實讀取的是
if(obj.prop)returnobj.prop
elseif(obj.[[prototype]].prop)returnobj.[[prototype]].prop;
elseif(obj.[[prototype]].[[prototype]].prop)returnobj.[[prototype]].[[prototype]].prop;
......一直這樣找下去
else{returnundefined;}
但是寫入的時候就是就不會從原型鏈里面查找,僅僅會賦值obj.prop
                            
查看完整回答
反對 回復(fù) 2019-04-19
  • 2 回答
  • 0 關(guān)注
  • 431 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號