av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - 關(guān)于this的一個(gè)疑問

瀏覽:116日期:2023-02-14 08:30:41

問題描述

javascript - 關(guān)于this的一個(gè)疑問

如圖所示,請(qǐng)問各位大佬,為什么foo.call()第一個(gè)參數(shù)是window?

問題解答

回答1:

其實(shí)問題關(guān)鍵是對(duì)于call/apply函數(shù)的作用不理解。用官方的話來說是,改變作用域上下文,只是這里為將局部的上下文改變?yōu)閣indow。其實(shí)call/apply是一種'借刀殺人'的方法,就是自己沒有某個(gè)屬性或方法,然后想調(diào)用其他對(duì)象的屬性或方法,也是對(duì)象繼承的一種實(shí)現(xiàn)方式。

回答2:

其實(shí)不是必須是windouws 也沒比用用call 只需要在f里面聲明 var that=this 把閉包的函數(shù)的this寫成that就好了,這是因?yàn)殚]包的函數(shù) 不能直接得到上層函數(shù)的環(huán)境變量 只能得到windous 所以聲明就ok 了 不懂的可以問我

回答3:

如果是前端,函數(shù)有一個(gè)隱形的參數(shù)this,默認(rèn)的就是指向window這個(gè)全局變量。除非你改變this指向的對(duì)象 比如foo.call(其他對(duì)象)原句是用了默認(rèn)的this參數(shù)注解是明確聲明了this指向的就是window

我再寫幾句,否則說去清楚

var foo = function () { console.log(this.x);}foo();為什么this指向window呢

另外this的語義是 指向調(diào)用本函數(shù)的對(duì)象。每個(gè)函數(shù)都需要一個(gè)對(duì)象來調(diào)用obj.f()表示f被obj的調(diào)用而前端如果沒有指定調(diào)用對(duì)象,默認(rèn)的都是全局變量window來調(diào)用函數(shù)

回答4:

javascript在設(shè)計(jì)的時(shí)候就會(huì)將內(nèi)部函數(shù)(即函數(shù)體中的函數(shù))中的this綁定到全局對(duì)象(即window)上,我覺得這里注釋寫著foo.call(window)應(yīng)該只是用js語言來解釋了一下為什么foo()中的this.x會(huì)輸出10。

回答5:

沒有說foo.call的第一個(gè)參數(shù)必須是window,題主要理解的是什么是call。

https://developer.mozilla.org...

回答6:

可以了解下call,apply,bind的作用與區(qū)別

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 麻豆久久 | 中文字幕动漫成人 | 中文字幕亚洲区一区二 | 中文字幕精品一区二区三区精品 | 日韩欧美国产精品一区 | 91就要激情 | 午夜理伦三级理论三级在线观看 | 亚洲一区二区三区视频 | 久久久久国产一区二区三区四区 | 国产精品99久久久久久久vr | 日韩视频在线免费观看 | 国产91av视频 | 国产亚洲日本精品 | 超碰伊人 | 日韩在线91| 农村真人裸体丰满少妇毛片 | 91免费小视频 | 亚洲三级在线 | 91精品国产日韩91久久久久久 | 欧美一区二区三区在线观看视频 | 午夜大片 | 亚洲一区亚洲二区 | 欧美日韩一区精品 | 成人免费视频网站在线看 | 盗摄精品av一区二区三区 | 欧美视频免费在线观看 | 欧洲妇女成人淫片aaa视频 | 9久久精品 | 天天射色综合 | 无码日韩精品一区二区免费 | 国产视频在线观看一区二区三区 | 国产精品亚洲一区二区三区在线观看 | 精品国产欧美一区二区三区不卡 | 91九色视频 | 国产午夜精品一区二区三区在线观看 | 欧美日韩亚洲国产 | 97日日碰人人模人人澡分享吧 | 成人国产精品色哟哟 | 日韩欧美在线观看 | 久久亚洲天堂 | 日韩一区二区不卡 |