日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

javascript - 關于JS的this和構造函數問題

瀏覽:210日期:2023-06-03 17:23:39

問題描述

function People() {}People.prototype.say = function () { alert('hello');}function Student() {}Student.prototype = new People();var superSay = Student.prototype.say;Student.prototype.say = function () { superSay.call(this); // 為什么會是'hello'? alert('stu-hello');}var s = new Student();s.say();如代碼中注釋,superSay.call(this)為什么會是People.prototype.say函數被調用?this指向誰?

問題解答

回答1:

this指向Student{}類,這個你可以在superSay.call(this)上面加一行console.log(this)進行驗證。javascript - 關于JS的this和構造函數問題

然后,我們看這個代碼

Student.prototype = new People();

為了方便后面解釋,我把這里的new People()創建的實例稱為實例X。由于superSay = Student.prototype.say,因為上面的Student.prototype = new People();,所以其中Student.prototype為實例X。所以實際上superSay調用的是實例X的say,而并非People.prototype.say。

至于你為啥覺得是在調用People.prototype.say,主要還是原型鏈的問題。實例X是People類的一個實例,所以實例X的所有方法會從People類的原型鏈“繼承”(用繼承這個詞,但是實際上JS的原型鏈和繼承還是有些區別的)。所以實例X.say如果沒有針對實例X重寫say方法,那么實例X的say就和People.prototype.say等效。

另外,superSay.call(this)這個里面的call,只是改變了this的上下文而已。但是由于superSay即實例X.say,這個方法里根本沒有this,所以this上下文的修改并不影響運行的結果。

javascript - 關于JS的this和構造函數問題

回答2:

這個問題在js中經常遇見

回答3:

個人觀點:先說下查找say方法的查找順序吧:s——student.prototype——people.prototype——Object,找到則就緒,停止查找。結合你的代碼,say只會查找到student.prototype。這里可以先把你的代碼先改成這樣就比較清晰:

People.prototype.say = function () {console.log(123); } People.prototype.jiao = function () {console.log(456); } Student.prototype.say = function () { console.log(321) }

其他不變。此時s.say()——輸出321,s.jiao()——輸出456。然后再回到你的代碼,因為你這是重寫了sdudent.prototype.say方法所以會執行此段代碼

Student.prototype.say = function () {superSay.call(this); // 為什么會是'hello'?alert('stu-hello'); }

第一句superSay.call(this),首先superSay是一個變量,變量類型是function,你可以在 var superSay = Student.prototype.say后面加上一段代碼console.log(typeof supperSay),于是你只是在調用這個函數,而這個變量儲存的是Student.prototype.say。執行到var superSay = Student.prototype.say,其實這里賦值的是 People.prototype.say。這點在高程的166-167頁有類似的。關于這點你可以再把你的代碼這2段換成這樣,其他不變。

var superSay = Student.prototype.say; Student.prototype = new People();

此時調用superSay 會報錯,因為此時執行到var superSay = Student.prototype.say時;student.prototype只有一個constructer屬性沒有say方法。然后回到你的代碼此時People.prototype.say會賦值給superSay

綜上第一句代碼會輸出hello,而你的call根本沒什么用第二句就不用說了。關于this其實我也不是特別清楚。我原來還認為console.log(this)會輸出S,結果輸出student,還需繼續學習。回答4:

把superSay構造函數中的this綁定為Student.prototype.

回答5:

樓上扯這么多不怕樓主蒙圈嗎

他程序里面stuSay指向的是function () {alert('hello');} 這個匿名函數對象,只要你不重新賦值stuSay,他一直就是指向這個函數對象,管你在什么地方調用,永遠就是這么個結果,至于在函數體內部this指向誰,你看下犀牛書吧....

樓主把犀牛書函數部分看完就不會有這些問題了,至于樓上扯那么多,真別把樓主扯暈了

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本欧美不卡| 欧美日韩一区二区三区四区在线观看| 日韩在线麻豆| 日本一不卡视频| 亚洲精品在线二区| 99精品一区| 日韩激情网站| 在线日韩成人| 亚洲精品在线观看91| 天堂中文在线播放| 日韩av一区二区三区四区| 亚洲成人精选| 久久影院一区二区三区| 免费在线观看一区| 国产精品日韩精品在线播放| 日韩影院精彩在线| 色8久久久久| 在线中文字幕播放| 国产精品magnet| 欧美日韩网址| 日韩欧美一区二区三区免费看| 精品视频一区二区三区四区五区 | 成人精品国产亚洲| 首页国产精品| 亚洲www免费| 久久国产精品美女| 欧美特黄一级大片| 日韩专区在线视频| 精品免费视频| 欧美在线观看天堂一区二区三区| 视频精品一区二区| 夜夜嗨一区二区| 亚洲网址在线观看| 狠狠色综合网| 日韩制服丝袜av| 免费欧美在线视频| 在线日韩成人| 亚洲电影在线一区二区三区| 国产一区日韩一区| 尤物tv在线精品| 日韩av在线播放网址| 久久香蕉国产| 麻豆久久精品| 午夜精品网站| 亚洲深深色噜噜狠狠爱网站| 久久福利精品| 日本一区二区三区中文字幕| 日韩美女国产精品| 欧美精品观看| 精品九九久久| 久久中文视频| 伊人久久婷婷| 久久99久久人婷婷精品综合| 日韩综合一区| 国产资源在线观看入口av| 久久国产成人午夜av影院宅| 国产精品三上| 国产精品一区二区三区av| 久久精品观看| 亚洲色图网站| 麻豆免费精品视频| 美腿丝袜亚洲三区| 欧美久久精品一级c片| 国产模特精品视频久久久久| 青青国产91久久久久久| 偷拍精品精品一区二区三区| 亚洲综合日本| 国产精品免费不| 99国产精品私拍| 久久精品免视看国产成人| 久久久久国产| 国产乱人伦精品一区| 亚洲一区有码| 亚洲综合日韩| 首页国产欧美日韩丝袜| 综合在线一区| 性色一区二区| 999在线观看精品免费不卡网站| 日韩高清成人| 三上亚洲一区二区| 日韩精品免费一区二区三区| 黄色成人91| 国产精品一区二区三区av| 美女久久99| 一本综合精品| 久久在线电影| 日韩国产高清在线| 日韩大片免费观看| 午夜久久av| 91av亚洲| 日本一区二区三区视频在线看| 另类综合日韩欧美亚洲| 久久久久久久久丰满| 亚洲丝袜美腿一区| 欧美日韩精品一本二本三本 | 亚洲先锋成人| 综合国产精品| 欧美专区一区二区三区| 欧美日中文字幕| 中文字幕一区二区av| 精品三区视频| 日韩动漫一区| 亚洲午夜黄色| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 免费日韩av| 99免费精品| 久久一区视频| 婷婷成人av| 蜜臀av亚洲一区中文字幕| 久久久久午夜电影| 国产伦精品一区二区三区千人斩| 日韩中文字幕亚洲一区二区va在线| 免费视频国产一区| 韩国女主播一区二区三区| 国产欧美一区二区色老头| 久久国产精品亚洲77777| 精品国产乱码| 亚洲91网站| 亚洲日本三级| 亚洲欧美日韩一区在线观看| 免费精品国产| 午夜精品成人av| 亚洲成人二区| 日韩欧美二区| 欧美日韩中文字幕一区二区三区| 国产精品白丝久久av网站| 国产精品久久久久av蜜臀| 日本成人在线视频网站| 日韩精品高清不卡| 视频一区免费在线观看| 亚洲尤物在线| www.com.cn成人| 久久成人一区| 国产精品草草| 亚洲久久视频| 久久婷婷激情| 国产成人精品999在线观看| 日韩一区二区三区精品| 五月天久久久| 国产综合婷婷| 亚洲小说欧美另类婷婷| 精品捆绑调教一区二区三区 | 欧美国产三级| 丝袜美腿高跟呻吟高潮一区| 你懂的国产精品永久在线| 午夜在线播放视频欧美| 日本不卡视频一二三区| 久久国产影院| 久久免费精品| sm捆绑调教国产免费网站在线观看 | 欧美日韩亚洲一区| 欧美精品一二| 免费看日韩精品| 久色成人在线| 日韩av一区二区在线影视| 视频国产精品| 日韩黄色av| 911精品国产| 精品视频在线一区二区在线| 国产美女亚洲精品7777| 国产a亚洲精品| 欧美日韩第一| 日韩精品一区二区三区免费观影 | 日韩在线观看一区二区三区| 成人福利av| 久久精品国产一区二区| 日韩毛片视频| 国产aⅴ精品一区二区四区| 99视频精品视频高清免费| 亚洲黄色网址| 视频一区在线播放| 日本亚洲欧美天堂免费| 国产一区二区亚洲| 午夜精品成人av| 日本大胆欧美人术艺术动态| 狠狠爱www人成狠狠爱综合网| 91精品福利观看| 欧美一级久久| 成人在线免费观看91| 亚洲午夜久久久久久尤物| 夜夜嗨网站十八久久 | 欧美特黄一级| 欧美亚洲一区二区三区| 久久三级中文| 久久久久99| 香蕉视频成人在线观看| 亚洲精品乱码久久久久久蜜桃麻豆| 久久狠狠久久| 国产第一亚洲| 欧美日韩国产探花| 91麻豆精品激情在线观看最新| 久久精品资源| 亚洲五月婷婷| 亚洲在线观看| 日韩二区三区四区| 激情丁香综合| 91亚洲精品视频在线观看| 久久国产毛片| 亚洲精品黄色| 日韩精品1区|