摘要:方法調(diào)用當一個函數(shù)作為一個對象的屬性調(diào)用時候下標表達式或者點表達式稱之為方法調(diào)用,此時指向這個對象。作為構(gòu)造函數(shù)調(diào)用的方式稱為的構(gòu)造函數(shù),的過程中構(gòu)造函數(shù)的對象的屬性和方法將被加到新對象的屬性上。
this
this是js的一個關(guān)鍵字,只能在函數(shù)內(nèi)部使用,在函數(shù)運行時候自動生成的內(nèi)部對象,代表函數(shù)運行時候的作用域指向,使用頻率極高!
常用的用法與作用域指向
函數(shù)調(diào)用:js里面規(guī)定當一個函數(shù)并非某一個對象,直接調(diào)用的時候,稱之為函數(shù)調(diào)用,此時this指向全局對象Global。
var t = 1; function test(){ console.log(this.t) } test() //1
方法調(diào)用:當一個函數(shù)作為一個對象的屬性調(diào)用時候([fn]下標表達式或者.fn點表達式)稱之為方法調(diào)用,此時this指向這個對象。
var t =1; var obj= { t:2, test :function(){ console.log(this.t) } } obj.test() // 2
作為構(gòu)造函數(shù)調(diào)用:var test = new fn() 的方式 稱fn為test的構(gòu)造函數(shù),new的過程中構(gòu)造函數(shù)的this對象的屬性和方法將被加到新對象的屬性上。
function fn(){ this.t = 1 } var test = new fn(); test.t // 1 //fn的this對象會被加到新生成的test對象上
4:apply,call,bind方式調(diào)用:apply,call,bind都可以改變一個函數(shù)運行時候的this指向。
var t = 1 var test = function(){ console.log(this.t) } test() //1 test.call({t:2}) //2 test.apply({t:3})//3 test.bind({t:4})()//4
關(guān)于bind的分析,可以看另一篇文章:bind方法分析與實現(xiàn)
看完了上面4種調(diào)用方式可以得出一個結(jié)論:this指向的作用域永遠是函數(shù)運行時候決定的。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/80850.html
摘要:復(fù)習基礎(chǔ)到底是什么的應(yīng)用場合極其廣泛。常量不可以通過重新賦值改變其值,也不可以在代碼運行時重新聲明。布爾對象是原始布爾數(shù)據(jù)類型的一個包裝器整數(shù)整數(shù)可以用十進制基數(shù)為十六進制基數(shù)為八進制基數(shù)為以及二進制基數(shù)為表示。 復(fù)習js day1 js基礎(chǔ) JavaScript 到底是什么 JavaScript 的應(yīng)用場合極其廣泛。簡單到幻燈片、照片庫、浮動布局和響應(yīng)按鈕點擊。復(fù)雜到游戲、2D 和 ...
摘要:構(gòu)造函數(shù)通常首字母大寫,用于區(qū)分普通函數(shù)。這種關(guān)系常被稱為原型鏈,它解釋了為何一個對象會擁有定義在其他對象中的屬性和方法。中所有的對象,都有一個屬性,指向?qū)嵗龑ο蟮臉?gòu)造函數(shù)原型由于是個非標準屬性,因此只有和兩個瀏覽器支持,標準方法是。 從這篇文章開始,復(fù)習 MDN 中級教程 的內(nèi)容了,在初級教程中,我和大家分享了一些比較簡單基礎(chǔ)的知識點,并放在我的 【Cute-JavaScript】系...
摘要:綁定函數(shù)被調(diào)用時,也接受預(yù)設(shè)的參數(shù)提供給原函數(shù)。一個綁定函數(shù)也能使用操作符創(chuàng)建對象這種行為就像把原函數(shù)當成構(gòu)造器。 一直很難理解js中的call apply bind,在w3schools,mdn閱讀了,也看了很多相關(guān)的文章,今天我來寫下我理解的call apply bind 首先創(chuàng)建一個函數(shù) function man(){} man.prototype = { name: ...
摘要:為了更好的講解構(gòu)造函數(shù)原型原型鏈等,我們需要復(fù)習一下函數(shù)的一些基礎(chǔ)知識。閉包在復(fù)習了函數(shù)的相關(guān)基礎(chǔ)知識之后,我們終于可以進入閉包。我們可以這樣理解閉包,首先,閉包是一個函數(shù),是一個什么樣子的函數(shù)呢是一個可以訪問另一個函數(shù)中變量的函數(shù)。 為了更好的講解構(gòu)造函數(shù)、原型、原型鏈等,我們需要復(fù)習一下函數(shù)的一些基礎(chǔ)知識。接下來,就讓我們一起回味一些JS的基礎(chǔ)知識點。 全局變量VS局部變量 簡單粗...
摘要:在創(chuàng)建子類實例時,不能向超類型的構(gòu)造函數(shù)中傳遞參數(shù)。構(gòu)造函數(shù)繼承子類傳進的值是基本思想是在子類構(gòu)造函數(shù)的內(nèi)部調(diào)用超類或父類型構(gòu)造函數(shù)。繼承保證構(gòu)造函數(shù)指針指向如果想同時繼承多個,還可使用添加屬性的方式類繼承, OOP:Object Oriented Programming 面向?qū)ο缶幊獭?題外話:面向?qū)ο蟮姆秶鷮嵲谔螅劝堰@些大的東西理解理解。 1.什么是對象? 根據(jù)高程和權(quán)威指南上...
閱讀 3491·2021-09-02 15:41
閱讀 2907·2021-09-02 09:48
閱讀 1459·2019-08-29 13:27
閱讀 1227·2019-08-26 13:37
閱讀 894·2019-08-26 11:56
閱讀 2551·2019-08-26 10:24
閱讀 1728·2019-08-23 18:07
閱讀 2675·2019-08-23 15:16