国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

淺談JS中this在各個場景下的指向

2024-05-06 15:35:56
字體:
來源:轉載
供稿:網友

為了保證的可讀性,本文采用意譯而非直譯。

想閱讀更多優質文章請猛戳GitHub博客,一年百來篇優質文章等著你!

1. this 的奧秘

很多時候, JS 中的 this 對于咱們的初學者很容易產生困惑不解。 this 的功能很強大,但需要一定付出才能慢慢理解它。

對Java、PHP或其他標準語言來看,this 表示類方法中當前對象的實例。大多數情況下,this 不能在方法之外使用,這樣就比較不會造成混淆。

在J要中情況就有所不同: this表示函數的當前執行上下文,JS 中函數調用主要有以下幾種方式:

函數調用: alert('Hello World!') 方法調用: console.log('Hello World!') 構造函數: new RegExp('//d') 隱式調用: alert.call(undefined, 'Hello World!')

每種調用類型以自己的方式定義上下文,所以就很容易產生混淆。

此外,嚴格模式也會影響執行上下文。

理解this關鍵是要清楚的知道函數調用及其如何影響上下文。

本文主要說明函數的調用方式及如何影響 this,并且說明執行上下文的常見陷阱。

在開始之前,先知道幾個術語:

調用函數正在執行創建函數體的代碼,或者只是調用函數。 例如,parseInt函數調用是parseInt('15')。

函數調用:執行構成函數主體的代碼:例如,parseInt函數調用是parseInt('15')。 調用的上下文:指 this 在函數體內的值。 例如,map.set('key', 'value')的調用上下文是 map。 函數的作用域:是在函數體中可訪問的變量、對象和函數的集合。

2.函數調用

當一個表達式為函數接著一個(,一些用逗號分隔的參數以及一個時,函數調用被執行,例如parseInt('18')

函數調用表達式不能是屬性方式的調用,如 obj.myFunc(),這種是創建一個方法調用。再如 [1,5].join(',')不是函數調用,而是方法調用,這種區別需要記住哈,很重要滴。

函數調用的一個簡單示例:

function hello(name) { return 'Hello ' + name + '!';}// 函數調用const message = hello('World');console.log(message); // => 'Hello World!'

hello('World')是函數調用: hello表達式等價于一個函數,跟在它后面的是一對括號以及'World'參數。

一個更高級的例子是IIFE(立即調用的函數表達式)

const message = (function(name) {  return 'Hello ' + name + '!';})('World');console.log(message) // => 'Hello World!'

IIFE也是一個函數調用:第一對圓括號(function(name) {...})

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁蒗| 盱眙县| 大渡口区| 邵阳市| 正安县| 休宁县| 汶川县| 故城县| 宁强县| 河曲县| 宁国市| 五大连池市| 东至县| 中西区| 伊春市| 来凤县| 穆棱市| 收藏| 潼关县| 浪卡子县| 大庆市| 贵溪市| 内江市| 乌恰县| 梅河口市| 舞钢市| 龙江县| 本溪市| 安龙县| 古丈县| 武山县| 徐水县| 张北县| 北碚区| 贞丰县| 霍州市| 石楼县| 石楼县| 静海县| 湄潭县| 湄潭县|