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

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

一道關(guān)于 JavaScript 中 this 的題目的困惑

瀏覽:265日期:2023-06-05 08:29:49

問(wèn)題描述

看到很多資料說(shuō),哪個(gè)對(duì)象調(diào)用了這個(gè)函數(shù),這個(gè)函數(shù)中的 this 就指向這個(gè)對(duì)象。下面這個(gè)例子中,foo這個(gè)函數(shù),是通過(guò) foo()這個(gè)語(yǔ)句調(diào)用的,為什么this 指向全局?并沒(méi)有 Window.foo( )這樣由全局對(duì)象調(diào)用呀?求教,多謝!

var x = 10;var obj = { x: 20, f: function () { var foo = function (){ console.log(this.x); } foo(); }};obj.f(); //10

問(wèn)題解答

回答1:

樓上講的有點(diǎn)問(wèn)題,foo不是全局變量,簡(jiǎn)單點(diǎn)來(lái)判斷(非嚴(yán)格模式)就是:1.當(dāng)一個(gè)函數(shù)沒(méi)有被指定上級(jí)對(duì)象的時(shí)候,this指向window2.當(dāng)一個(gè)函數(shù)有被指定上級(jí)對(duì)象的時(shí)候,this僅指向最靠近的上級(jí)(父)對(duì)象如 foo.fn.o() , o里面的this指向fn

回答2:

是這樣子的,我寫(xiě)在注釋里面

var x = 10;var obj = { x: 20, f: function () { var foo = function (){ console.log(this.x);//你這是把函數(shù)賦值給一個(gè) foo的變量。此時(shí)的 foo 是全局的,所以下面調(diào)用 foo()這里是10嘛 } foo(); }};obj.f(); // 這個(gè)調(diào)用 f 函數(shù),因?yàn)?f(),并沒(méi)有返回出去什么,所以這里是 undefined回答3:

對(duì)于內(nèi)部函數(shù),即聲明在另一個(gè)函數(shù)體內(nèi)的函數(shù),都將會(huì)綁定到全局對(duì)象上,這是JavaScript的設(shè)計(jì)缺陷,正確的設(shè)計(jì)方式是內(nèi)部函數(shù)的this應(yīng)該綁定到其外層函數(shù)對(duì)應(yīng)的對(duì)象上,所以導(dǎo)致以上問(wèn)題。

為了規(guī)避這一設(shè)計(jì)缺陷,可以采用變量替代的方法,約定俗成,可以使用self或that,代碼如下:

var x = 10;var obj = { x: 20, f: function () { var self = this; var foo = function (){ console.log(self.x); } foo(); }};obj.f();回答4:

首先搞清楚一個(gè)道理:1: window也是一個(gè)對(duì)象,它是一個(gè)特殊的對(duì)象,它代表全局。 當(dāng)你以以下方式調(diào)用一個(gè)函數(shù)的時(shí)候:function foo(){....}foo();//第二行的這種調(diào)用方式(函數(shù)前面沒(méi)有一個(gè)你自己定義的object),我們叫做‘全局調(diào)用’。其實(shí)等同于window.foo()。所以你看出來(lái)了嗎?在全局調(diào)用函數(shù),其實(shí)是在對(duì)象上調(diào)用函數(shù)的一個(gè)特例,因?yàn)檫@時(shí)候的對(duì)象是window.2: 那為什么上面的代碼是在全局調(diào)用了foo(),而不是在obj上面呢?我把代碼改一下,讓他輸出20:

var x = 10;var obj = { x: 20, f: function () { console.log(this.x); }};obj.f();//20

對(duì)比一下,兩段代碼,找找它們的不同。

回答5:

var x = 10;var obj = { x: 20, f: function () { console.log(this.x); // 20 var foo = function (){ // 這里函數(shù)的作用域是window console.log(this.x); } foo(); }};obj.f(); //10

var x = 10;var obj = { x: 20, f: function () { let that = this; var foo = function (){ // 這里形成了閉包 console.log(that.x); } foo(); }};obj.f(); //20回答6:

你可以把代碼改寫(xiě)為這樣子的:

var x = 10;var obj = { x: 20, f: function () { var foo = function (){ console.log(this.x); } foo.call(null) // 等價(jià)于foo.call(window) }};obj.f.call(obj); //10 結(jié)果不變

通過(guò)上面的例子,你可以這樣理解 當(dāng)調(diào)用一個(gè)函數(shù)的時(shí)候,JavaScript解析器是按照call或者apply這樣的形式去調(diào)用的。通過(guò)這樣的方式來(lái)為函數(shù)中的this指定一個(gè)值。這兩個(gè)方法的第一個(gè)參數(shù)就是foo方法被調(diào)用時(shí)其內(nèi)部this的值,如果call方法的第一個(gè)參數(shù)為null、undefined時(shí),就會(huì)默認(rèn)把全局對(duì)象作為第一個(gè)參數(shù)(你可以試試foo.call()、foo.call(null)、foo.call(undefined))

回答7:

函數(shù)內(nèi)套函數(shù),this指針丟失

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
尤物精品在线| 青草av.久久免费一区| 精品九九久久| 麻豆国产一区| 精品视频亚洲| 国产精品v一区二区三区| 嫩草伊人久久精品少妇av杨幂| 国产精品亚洲综合色区韩国| 欧美国产中文高清| 国产精品久久久久蜜臀| 婷婷综合六月| 亚洲激情另类| 亚洲综合小说| 国产一卡不卡| 高清精品久久| 亚洲午夜电影| 国产视频亚洲| 四虎精品永久免费| 国产精品jk白丝蜜臀av小说| 国产成人a视频高清在线观看| 久久免费福利| 99久久精品费精品国产| 国产视频一区三区| 热久久久久久| 国产白浆在线免费观看| 九一成人免费视频| 天堂va欧美ⅴa亚洲va一国产| 国产精品a级| 亚洲天堂1区| 丝袜美腿高跟呻吟高潮一区| 欧美日韩中出| 欧美gv在线| 另类国产ts人妖高潮视频| 日本欧美一区二区在线观看| 色综合狠狠操| 久久亚洲精品中文字幕蜜潮电影| 国产亚洲永久域名| 国产精品亚洲综合久久| 91精品国产91久久久久久黑人| 99亚洲视频| 国产精品一区二区精品视频观看| 国产精品亚洲一区二区三区在线观看| 在线亚洲成人| 国产精品视频一区二区三区四蜜臂| 丝袜美腿诱惑一区二区三区| 亚洲精品视频一二三区| 精品美女久久| 国产亚洲亚洲| 乱一区二区av| 亚洲在线网站| 国产精品s色| 99视频精品| 里番精品3d一二三区| 一本一本久久| 日韩av在线播放网址| 久久亚洲一区| 国产一区二区三区久久久久久久久| 欧美精品羞羞答答| 欧美国产极品| 亚洲伊人影院| 久久蜜桃资源一区二区老牛| 青青草精品视频| 欧美福利专区| 国产精品sss在线观看av| 日韩一区二区免费看| 国产精品观看| 中文日韩在线| 岛国av免费在线观看| 亚洲综合福利| 在线日韩视频| 国产一区一一区高清不卡| 最新国产精品久久久| 久久精品国产亚洲夜色av网站 | 欧美成人国产| 麻豆国产精品一区二区三区| 男女精品网站| 日韩在线短视频| 国产精品4hu.www| 午夜在线一区二区| 日韩毛片视频| 麻豆精品国产91久久久久久| 婷婷综合一区| 亚洲专区欧美专区| 久久精品国产99久久| 久久精品亚洲| 欧美影院精品| 综合国产在线| 99综合视频| 亚洲a一区二区三区| 日韩av在线中文字幕| 国产精品视频一区二区三区四蜜臂 | 视频一区日韩精品| 91精品福利| 日韩黄色大片网站| 精品视频一区二区三区四区五区 | 最新亚洲国产| 亚洲女人av| 亚洲欧洲美洲av| 精品一区二区三区四区五区| 欧美日韩亚洲三区| 午夜亚洲福利| 亚洲精品乱码日韩| 一级欧美视频| 亚洲人成亚洲精品| 亚洲欧美日韩视频二区| 久久久久久久久99精品大| 成人国产精品| 国产精品99久久精品| 国产一区二区三区探花| 久久精品人人| 精品视频网站| 国际精品欧美精品| 久久精品国产网站| 精品视频自拍| 国产不卡精品| 成人在线视频免费| 9999国产精品| 国产精品亚洲一区二区三区在线观看| 精品亚洲a∨| 中文字幕在线视频网站| 欧美黑人做爰爽爽爽| 国产精品一区2区3区| 国产精品入口久久| 免费一级欧美片在线观看网站| 久久精品av麻豆的观看方式| 国产调教一区二区三区| 国产欧美日韩精品一区二区三区| 青青伊人久久| 欧美久久亚洲| 美女高潮久久久| 国产乱码午夜在线视频| 久久精品二区三区| 一区免费视频| 美国三级日本三级久久99| 亚洲精品中文字幕99999| 深夜福利一区| 69堂免费精品视频在线播放| 国产伦乱精品| 风间由美中文字幕在线看视频国产欧美| 国产精品99视频| 久久久久久久久丰满| 红桃视频国产一区| 亚洲精品在线国产| 国产精品99久久久久久董美香| 激情综合婷婷| 欧美日韩中文字幕一区二区三区| 在线亚洲自拍| 欧美日韩91| 高清日韩中文字幕| av亚洲在线观看| 亚洲欧美日本国产专区一区| 午夜精品影视国产一区在线麻豆| 国产精品入口久久| 最新中文字幕在线播放 | 国产在线日韩精品| 国产精品av久久久久久麻豆网| 日韩午夜黄色| 日韩av资源网| 久久男人av资源站| 国产精品美女| 国产精品亚洲欧美日韩一区在线| 91视频久久| 欧美日韩高清| 欧美一级二级视频| 国产亚洲一区二区手机在线观看 | 国产精品传媒麻豆hd| 亚洲成人一区在线观看| 视频一区欧美精品| 久久精品伊人| 日韩午夜免费| 美女毛片一区二区三区四区最新中文字幕亚洲| 日韩精品看片| 一本综合精品| 色婷婷亚洲mv天堂mv在影片| 石原莉奈在线亚洲二区| 久久精品一区二区三区中文字幕| 欧美精品一区二区三区精品| 欧美色综合网| 99久久久久久中文字幕一区| 午夜精品福利影院| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 亚洲高清毛片| 国产精品综合| 欧美日韩免费观看一区=区三区| 青青青国产精品| 香蕉成人av| 久久精品99国产国产精| 欧美影院三区| 国产精品18| 国产精品毛片一区二区三区| 麻豆国产欧美一区二区三区 | 美女久久99| 免费观看在线综合| 亚洲深夜视频| 国产欧美啪啪| 亚洲天堂免费| 99久久久久国产精品| 欧美激情麻豆| 蜜臀av性久久久久蜜臀aⅴ流畅| 日本欧美国产|