国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一個(gè)JS初學(xué)者關(guān)于查找變量的一些感悟。。

Apollo / 837人閱讀

摘要:我是一個(gè)的初學(xué)者,這幾天被直接訪問標(biāo)識(shí)符和通過訪問標(biāo)識(shí)符搞的頭疼,于是大膽的做了一個(gè)猜測(cè)直接訪問標(biāo)識(shí)符是通過作用域鏈進(jìn)行查找的。然后就開始試了起來結(jié)合下面的代碼來說首先第一個(gè)調(diào)用函數(shù),通過作用域鏈來查找。

我是一個(gè)js的初學(xué)者,這幾天被直接訪問標(biāo)識(shí)符和通過this訪問標(biāo)識(shí)符搞的頭疼,于是大膽的做了一個(gè)猜測(cè):
1. 直接訪問標(biāo)識(shí)符是通過作用域鏈進(jìn)行查找的。
2. 通過this訪問標(biāo)識(shí)符是通過原型鏈來查找的。
然后就開始試了起來!!??!

結(jié)合下面的代碼來說

var a = "abc";

var obj = {
    a: "def",
    display3: function () {
        var a = "sssss";
        console.log(a);
    },
    display4: function() {
        console.log(this.a);
    }
}

Object.prototype.a = "ghi";

function display1() {
    // var = "hahaha";
    console.log(a)
}

function display2() {
    console.log(this.a);
}

display1(); // "abc"
display2();  // "abc"

obj.display3();
obj.display4();

// display2.call(obj);  // "def"
// display1.call(obj);  // "abc"

首先:

第一個(gè):
調(diào)用display1函數(shù),通過作用域鏈來查找a。此時(shí)display1的作用域鏈為:display1的活動(dòng)對(duì)象→全局活動(dòng)對(duì)象,
所以找到了全局活動(dòng)對(duì)象中的"abc",如果在display1中有變量a,那么輸出的則是這個(gè)變量的值。

第二個(gè)
調(diào)用diplay2函數(shù),通過原型鏈來查找a。因?yàn)閠his是基于當(dāng)前的執(zhí)行環(huán)境綁定的,所以this指向全局變量對(duì)象(也就是window),所以找到了"abc"并輸出。
有意思的是,此時(shí)如果我刪除window中定義的a="abc", 那么輸出結(jié)果則是"ghi". 于是回憶了一下自己所學(xué)的知識(shí),發(fā)現(xiàn)因?yàn)閣indow對(duì)象是Global對(duì)象在瀏覽器中的表現(xiàn),然后Global是js中的單體內(nèi)置對(duì)象,那么似乎它也應(yīng)該繼承自O(shè)bject.prototype, 恩..按照我的猜想,輸出結(jié)果為"ghi"是情理之中的。

第三個(gè):
通過obj調(diào)用display3函數(shù),因?yàn)榍懊鏇]有this,所以是通過作用域鏈進(jìn)行查找的,此時(shí)display3的作用域鏈為display1的活動(dòng)對(duì)象→全局活動(dòng)對(duì)象,所以輸出結(jié)果是"abc", 同樣,如果我再display3中定義了a,那么輸出的則是這個(gè)a的值

第四個(gè)
通過obj調(diào)用display4函數(shù),因?yàn)榍懊嬗衪his,所以是通過原型鏈進(jìn)行查找的,此時(shí)this指向的是obj,所以輸出的結(jié)果是obj對(duì)象中"def",如果我們刪除obj中的a屬性,那么輸出結(jié)果則是Object.prototype中的"ghi",如果再刪除這個(gè)ghi,那么輸出結(jié)果就是undefined了。
上面這些好像都符合邏輯,可是我又突然發(fā)現(xiàn),當(dāng)調(diào)用display1時(shí),如果刪除了作用域鏈中每個(gè)變量對(duì)象的a屬性,那么輸出結(jié)果則是"ghi", 這個(gè)"ghi"是在Object.prototype中定義的,所以

綜合了一下

1. 直接訪問標(biāo)識(shí)符是通過作用域鏈和原型鏈綜合進(jìn)行查找的。
2. 通過this訪問標(biāo)識(shí)符是通過原型鏈來查找的。
然后又出現(xiàn)了一個(gè)問題:直接訪問標(biāo)識(shí)符的查找順序是 1:先查找作用域鏈前端的變量對(duì)象,然后再查找它的原型,然后再查找作用域鏈中下一個(gè)變量對(duì)象,然后再查找它的原型 還是 2: 一直查找作用域鏈中的變量對(duì)象,知道window對(duì)象,再查找它的原型呢?

然后又突然發(fā)現(xiàn),在調(diào)用display1時(shí),如果display1中沒有定義a變量,訪問到的則是window中的a = "abc",而不是Object.prototype中的a = "ghi".

所以再綜合一下

1. 直接訪問標(biāo)識(shí)符的順序是按順序查找作用域鏈中的每一個(gè)變量對(duì)象直至全局變量對(duì)象,如果全局變量對(duì)象中沒

有該變量,則沿著window對(duì)象的原型鏈進(jìn)行查找。

2. 通過this訪問標(biāo)識(shí)符是通過原型鏈來查找的。

我去累死了,我也沒想到自己寫了這么多,從結(jié)果來看,應(yīng)該是這樣,不過也不知道到底是不是這樣。。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/85944.html

相關(guān)文章

  • 項(xiàng)目中使用 TypeScript 一些感悟

    摘要:上周發(fā)布了一款名為的工具,是完全采用以下簡(jiǎn)稱來開發(fā)的。而使用,可以在一定程度上減少這個(gè)問題。自成文檔的特性對(duì)于多人維護(hù)的項(xiàng)目來說是非常有用的,它能夠大大降低項(xiàng)目當(dāng)中溝通和理解的成本。作為的超集,我們可以在中放心使用的各種高級(jí)能力。 showImg(https://segmentfault.com/img/remote/1460000019689248); 上周發(fā)布了一款名為 Smart...

    pcChao 評(píng)論0 收藏0
  • 由淺入深前端面試題 和矯情“浪漫主義”詩(shī)句

    摘要:好吧,我承認(rèn)太標(biāo)題黨了,這篇文章是通過一道前端面試題引出的純技術(shù)討論。我先要矯情無比的從中外詩(shī)歌說起。這一星期陸陸續(xù)續(xù)面試了不少于個(gè)人,其中不乏工作履歷突出的候選者。這樣做的問題在于循環(huán)并沒有要求枚舉對(duì)象的修改與當(dāng)前循環(huán)保持一致。 好吧,我承認(rèn)太標(biāo)題黨了,這篇文章是通過一道前端面試題引出的純技術(shù)討論。我先要矯情無比的從中外詩(shī)歌說起。 傳統(tǒng)的佛學(xué)經(jīng)典里,被世人熟知的有這樣一句話:一花一世...

    JerryZou 評(píng)論0 收藏0
  • 由淺入深前端面試題 和矯情“浪漫主義”詩(shī)句

    摘要:好吧,我承認(rèn)太標(biāo)題黨了,這篇文章是通過一道前端面試題引出的純技術(shù)討論。我先要矯情無比的從中外詩(shī)歌說起。這一星期陸陸續(xù)續(xù)面試了不少于個(gè)人,其中不乏工作履歷突出的候選者。這樣做的問題在于循環(huán)并沒有要求枚舉對(duì)象的修改與當(dāng)前循環(huán)保持一致。 好吧,我承認(rèn)太標(biāo)題黨了,這篇文章是通過一道前端面試題引出的純技術(shù)討論。我先要矯情無比的從中外詩(shī)歌說起。 傳統(tǒng)的佛學(xué)經(jīng)典里,被世人熟知的有這樣一句話:一花一世...

    lk20150415 評(píng)論0 收藏0
  • 《高性能JavaScript》讀書筆記

    摘要:除此以外,讓元素脫離文檔流也是一個(gè)很好的方法。因?yàn)樵匾坏┟撾x文檔流,它對(duì)其他元素的影響幾乎為零,性能的損耗就能夠有效局限于一個(gè)較小的范圍。講完重排與重繪,往元素上綁定事件也是引起性能問題的元兇。高性能這本書非常精致,內(nèi)容也非常豐富。 showImg(https://segmentfault.com/img/bVJgbt?w=600&h=784); 入手《高性能JavaScript》一...

    W_BinaryTree 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<