成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

淺談js中的this

GHOST_349178 / 3247人閱讀

摘要:相信很多剛剛學(xué)習(xí)的新手都會(huì)有同感,當(dāng)看一段代碼時(shí),發(fā)現(xiàn)里面有很多,但是這些到底是指向哪里卻沒(méi)有那么清楚,為了搞清楚這些到底是什么情況,特地花點(diǎn)時(shí)間總結(jié)如下幾點(diǎn)最普遍的表示全局對(duì)象表示全局對(duì)象輸出為解析設(shè)置全局變量初始值為,當(dāng)調(diào)用函數(shù)之后改變

相信很多剛剛學(xué)習(xí)js的新手都會(huì)有同感,當(dāng)看一段js代碼時(shí),發(fā)現(xiàn)里面有很多this,但是這些this到底是指向哪里卻沒(méi)有那么清楚,為了搞清楚這些this到底是什么情況,特地花點(diǎn)時(shí)間總結(jié)如下幾點(diǎn):
1.最普遍的this表示全局對(duì)象

 // 1.this表示全局對(duì)象
    var x = 1
    function test1(){
        this.x = 2;
        console.log(this.x);
    }
    test1();//輸出為2

解析:設(shè)置全局變量x初始值為1,當(dāng)調(diào)用函數(shù)test1()之后改變?nèi)肿兞縳的初始化值,故為2

2.對(duì)象方法中的this(這里this就指這個(gè)上級(jí)對(duì)象)
例1:

  var name = "全局this";
    var object = {
        name : "對(duì)象中this",
        getNameFunc : function(){
            return function(){
                return this.name;
            };
        }
    };
    console.log(object.getNameFunc()());//輸出:全局this

例2:

 var name = "全局this";
    var object = {
        name : "對(duì)象中this",
        getNameFunc : function(){
            var that = this;
            return function(){
                return that.name;
            };
        }
    };
    console.log(object.getNameFunc()());//輸出:對(duì)象中this

例3

 var name = "全局this";
    var object = {
        name : "對(duì)象中this",
        getNameFunc : function(){
            var that = this;
            return function(){
                return that.name+","+this.name;
            };
        }
    };
    console.log(object.getNameFunc()());//輸出:對(duì)象中this,全局this

例4

function test2(){
       console.log(this.y);
   }
    var obj = {};
    obj.y = 2;
    obj.func= test2;
    obj.func();//輸出2

解析:例1中,直接this調(diào)用全局,而在例2中this表示函數(shù)的上一級(jí)對(duì)象,故此時(shí)的this是對(duì)象object;在例4中test2函數(shù)被賦值給對(duì)象obj,所以此時(shí)的this表示對(duì)象obj

3.構(gòu)造函數(shù)調(diào)用(實(shí)際上也可以理解成是一個(gè)對(duì)象,跟2中一樣)

 var a = 1;
     function test3(){
         this.a = 2;
     }
     var gz = new test3();
     console.log(a);//輸出1
     console.log(this.a);//輸出1
    console.log(gz.a);//輸出2

解析:當(dāng)new test3()弄成一個(gè)新的對(duì)象的時(shí)候,test3里面的this指向的是gz,所有全局變量沒(méi)有變化

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84519.html

相關(guān)文章

  • 淺談JS中的構(gòu)造函數(shù)、原型對(duì)象(prototype)、實(shí)例中的屬性/方法之間的關(guān)系

    摘要:同時(shí)給該構(gòu)造函數(shù)自動(dòng)添加一個(gè)屬性,該屬性為指針,指向原型對(duì)象??偨Y(jié)構(gòu)造函數(shù)中的屬性和方法僅為聲明和定義,一旦實(shí)例化工作完成后。實(shí)例對(duì)象自身的屬性和方法與構(gòu)造函數(shù)將不在存在關(guān)聯(lián)關(guān)系。 構(gòu)造函數(shù):函數(shù)中的一種,通過(guò)關(guān)鍵字new可以創(chuàng)建其實(shí)例。為了便于區(qū)分,通常首字母大寫(xiě);原型對(duì)象:一種特殊的對(duì)象,構(gòu)造函數(shù)創(chuàng)建時(shí)即自動(dòng)生成;與構(gòu)造函數(shù)形成一一對(duì)應(yīng),如同人和影子般的關(guān)系;實(shí)例:通過(guò)構(gòu)造函數(shù)實(shí)例...

    kevin 評(píng)論0 收藏0
  • js面向?qū)ο?em>淺談(三)

    摘要:還有一個(gè)問(wèn)題,就是不能在創(chuàng)建子類性時(shí),像父類型的構(gòu)造函數(shù)傳遞參數(shù)。組合繼承將原型鏈和借用構(gòu)造函數(shù)組合到一起,發(fā)揮兩者之長(zhǎng)的一張繼承模式,下面來(lái)看個(gè)例子。組合繼承最大的問(wèn)題是無(wú)論在什么情況下,都會(huì)調(diào)用兩次父類型構(gòu)造函數(shù)。 繼承 繼承是面向?qū)ο笳Z(yǔ)言中特別重要的概念,js的繼承主要是靠原型鏈實(shí)現(xiàn)的。 原型鏈?。?! 看到我給標(biāo)題打了三個(gè)嘆號(hào)嗎,這里真的很重要!這里真的很重要!這里真的很重要!j...

    awkj 評(píng)論0 收藏0
  • 淺談細(xì)說(shuō) JS 函數(shù)(call,apply,重載)

    摘要:什么是函數(shù)引用的原話函數(shù)是一組可以隨時(shí)隨地運(yùn)行的語(yǔ)句。函數(shù)是由這樣的方式進(jìn)行聲明的關(guān)鍵字函數(shù)名一組參數(shù),以及置于括號(hào)中的待執(zhí)行代碼。 什么是函數(shù)? 引用 W3School 的原話: 函數(shù)是一組可以隨時(shí)隨地運(yùn)行的語(yǔ)句。 函數(shù)是 ECMAScript 的核心。 函數(shù)是由這樣的方式進(jìn)行聲明的:關(guān)鍵字 function、函數(shù)名、一組參數(shù),以及置于括號(hào)中的待執(zhí)行代碼。 函數(shù)的基本語(yǔ)法是這樣的:...

    U2FsdGVkX1x 評(píng)論0 收藏0
  • 淺談Vue.use

    摘要:并且接收的參數(shù)的限制是兩種類型。對(duì)于這兩種類型有不同的處理。之后給這個(gè)插件添加至已經(jīng)添加過(guò)的插件數(shù)組中,標(biāo)示已經(jīng)注冊(cè)過(guò)最后返回對(duì)象。還有一種則是將所有邏輯都編寫(xiě)成一個(gè)函數(shù)暴露給。個(gè)人覺(jué)得第一種方式比較合理。 先舉個(gè)? 我們先來(lái)看一個(gè)簡(jiǎn)單的事例首先我使用官方腳手架新建一個(gè)項(xiàng)目vue init webpack vue-demo然后我創(chuàng)建兩個(gè)文件index.js plugins.js.我將這...

    MingjunYang 評(píng)論0 收藏0
  • 淺談js中reduce方法

    摘要:介紹方法接收一個(gè)函數(shù)作為累加器為數(shù)組中的每一個(gè)元素依次執(zhí)行回調(diào)函數(shù),不包括數(shù)組中被刪除或從未被賦值的元素,接受四個(gè)參數(shù)初始值上一次回調(diào)的返回值,當(dāng)前元素值,當(dāng)前索引,原數(shù)組。 介紹reduce reduce() 方法接收一個(gè)函數(shù)作為累加器,reduce 為數(shù)組中的每一個(gè)元素依次執(zhí)行回調(diào)函數(shù),不包括數(shù)組中被刪除或從未被賦值的元素,接受四個(gè)參數(shù):初始值(上一次回調(diào)的返回值),當(dāng)前元素值,當(dāng)...

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

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

0條評(píng)論

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