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

資訊專欄INFORMATION COLUMN

javscript中this初探

Xufc / 2753人閱讀

摘要:是什么是一個特別的關鍵字,是自動定義在所有函數和全局的作用域中。是在運行時綁定的,而不是聲明時綁定的。小結的指向取決于函數執行時的塊級上下文

This

This是什么:
this是一個特別的關鍵字,是自動定義在所有函數和全局的作用域中。this是在運行時綁定的,而不是聲明時綁定的。

為什么要有this
假設不存在this關鍵字,那么對于一個函數根據不同上下文背景下的復用就用傳入參數

        var obj = Object.create(null);

        obj.name = "Nico";

        function speak(context) {
            console.log(context.name + " speaks a word");
        }

        speak(obj);

this指向的幾種情況:
1、一般情況下,this是指向當前執行時的對象

var person = {
    name: "nico",
    getName: function() {
        console.log(this.name)
    }
}

var name = "siip";

person.getName(); //nico

person對象調用getName方法,所以當前this指向的是person對象

2、如果沒有明確對象時,this指向全局對象(在非嚴格模式下,在嚴格模式下,函數綁定undefined,也就是this指向undefined)

var name = "siip";

function className() {
    console.log(this.name);
}

className();//siip

其實這里的className可相似于window.className,所以當前this指向window
3、setTimeout、setInterval、匿名函數this指向全局對象

var person = {
    name: "nico",
    fns: function() {
        setTimeout(function() {
            console.log(this.name)
        }, 100);//siip

        setInterval(function() {
            console.log(this.name)
        }, 100);//siip

        (function() {
            console.log(this.name)
        })()//siip
    }
}
var name = "siip";
person.fns();

這些方法都比較容易理解this的指向,因為匿名函數或者定時器函數都是掛載window上的函數,調用者是window對象,這些函數里聲明的函數,也指向調用者,類似于:

        function foo() {
            function bar() {
                console.log(this)
            }
            bar();
        }

        foo();

4、apply、call能夠改變this指向(無參數時或者傳入null、undefined,指向window)

    var person = {
        name: "nico",
        applyFns: function() {
            console.log(this.name)
        }
    }
    var name = "siip";
    person.applyFns();//nico
    person.applyFns.apply();//siip

有時候,

5、new Function 構造函數中的this指向該構造函數new出來的對象。

因為new Function的過程大概:

創建一個新的空對象

空對象_proto_指向Function.prototype

空對象與當前函數調用的this綁定

返回新創建對象

所以new Function中的this指向return的對象。

小結

this的指向取決于函數執行時的塊級上下文

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/107403.html

相關文章

  • javscript學習筆記

    摘要:一直對抱有敬畏的態度,也沒有一直深入學習。當學到各種框架的時候才發現力不從心,感覺到了基礎的重要性,重新認真的系統的學習一下。 一直對javscript抱有敬畏的態度,也沒有一直深入學習。當學到各種js框架的時候才發現力不從心,感覺到了javascript基礎的重要性,重新認真的系統的學習一下。showImg(http://static.xiaomo.info/images/javas...

    hedge_hog 評論0 收藏0
  • javscript插件匯總

    摘要:更新單元測試,已使用,,,使用測試覆蓋率,并集成配合來做持續化構建,可以參考本項目的配置文件和的配置文件。判斷是否然后記得在文件中暴露函數單元測試在文件新建測試用例然后記得在中引入之前創建的測試用例腳本。 前言作為戰斗在業務一線的前端,要想少加班,就要想辦法提高工作效率。這里提一個小點,我們在業務開發過程中,經常會重復用到日期格式化、url參數轉對象、瀏覽器類型判斷、節流函數等一類函數...

    K_B_Z 評論0 收藏0
  • Promise初探

    摘要:可以根據省份城市和區對組件設置默認值。獲取省份獲取城市獲取區出現層嵌套的回調,這就是傳說中的惡魔金字塔。相比回調嵌套,層次更分明,可讀性強。基本原理學習無論是在異步操作的執行之前或執行之后,用對象的方法注冊回調,回調都能一致執行。 遭遇惡魔金字塔 項目需要,封裝了一個省市區的地址選擇器組件。 可以根據省份id、城市id和區id對組件設置默認值。邏輯是這樣的: 獲取省份列表,選中默認省...

    mj 評論0 收藏0
  • Vue初探-日期選擇器

    摘要:之前用用面向對象的方法實現過日期選擇器,最近在練習,現在用實現一遍。需求設定實現一個日期選擇器,默認顯示,高亮顯示。能夠點擊上一月下一月進行日期跳轉。實現日期選擇有兩個比較關鍵的方法獲取當月天數,以便循環遍歷多少天。 之前用jquery用面向對象的方法實現過日期選擇器,最近在練習vue,現在用vue實現一遍。發現vue用數據驅動的方式來實現,感覺還不錯。 需求設定 1.實現一個日期選擇...

    MAX_zuo 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<