vue小記——this(2)

在Vue的方法中使用普通函數作為回調函數,那么在該回調函數中,this將不會指向Vue實例,而是指向全局對象(在瀏覽器中是window)。

錯誤 :

export default {  data() {  return {  message: 'Hello Vue!'  };  },  methods: {  someAsyncMethod() {  setTimeout(function() {  // 在這里,`this` 指向全局對象(通常是 window)  console.log(this.message); // undefined,因為 this 不再指向 Vue 實例  }, 1000);  }  }  
}

因為?setTimeout?是一個全局函數,當它的回調函數被執行時,它是在全局作用域中運行的,而不是在 Vue 實例的作用域中。因此,除非你顯式地綁定?this(如使用?bind?方法),否則?this?將會指向全局對象。

為了解決這個問題,通常有兩種方法:

使用箭頭函數

export default {  data() {  return {  message: 'Hello Vue!'  };  },  methods: {  someMethod() {  setTimeout(() => {  // 在這里,`this` 指向 Vue 實例  this.message = 'Updated message';  }, 1000);  }  }  
}

手動綁定?this?

export default {  data() {  return {  message: 'Hello Vue!'  };  },  methods: {  someMethod() {  setTimeout(function() {  // 在這里,`this` 指向 Vue 實例  this.message = 'Updated message';  }.bind(this), 1000);  }  }  
}

原生 JavaScript 中,如果需要回調函數中的?this?指向外部對象或閉包中的變量,那么使用箭頭函數可能更合適。但如果不需要這樣的綁定,或者希望?this?指向調用回調函數時的上下文(如 DOM 元素),那么使用普通函數可能更合適。

// 原生 JavaScript 中的回調函數示例  
const element = document.getElementById('myElement');  // 使用普通函數,`this` 指向 element  
element.addEventListener('click', function() {  console.log(this); // 輸出 element  
});  // 使用箭頭函數,`this` 指向定義時的上下文(通常是外部對象或全局對象)  
const myObject = {  message: 'Hello World!'  
};  // 如果我們希望箭頭函數內部的 `this` 指向 myObject,那么可以這樣做  
element.addEventListener('click', () => {  console.log(this.message); // 輸出 "Hello World!"  
});  // 如果我們希望箭頭函數內部的 `this` 指向元素本身(就像普通函數一樣),  
// 我們需要手動綁定,但箭頭函數在這里沒有優勢  
element.addEventListener('click', (() => {  console.log(this); // 輸出 element  
}).bind(element));

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696764.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696764.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696764.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

npm 包發布

name publish必填項(version,nameverson構成唯一標識),唯一,所以publish前驗證庫里是否存在該名稱,方式npm info xxx npm ERR! 404 cy_test is not in the npm registry.可以使用。規則:不能以.或者_開頭…

maven工程打包引入本地jar包

1、通過maven生成本地區倉庫包 mvn install:install-file --settings D:\lkx\download\apache-maven-3.6.3\conf\settings.xml -Dfileaspose-cad-21.8.jar -DartifactIdaspose-cad -DgroupIdsystem.core -Dversion21.8 -Dpackagingjar -DgeneratePomtrue # --settings&#xf…

進程線程間的通信:2024/2/22

作業1&#xff1a;代碼實現線程互斥機制 代碼&#xff1a; #include <myhead.h>//臨界資源 int num10;//創建一個互斥鎖 pthread_mutex_t mutex;//任務一 void *task1(void *arg) {//獲取鎖資源pthread_mutex_lock(&mutex);num123;sleep(3);printf("task1:num…

PacketSender-用于發送/接收 TCP、UDP、SSL、HTTP 的網絡實用程序

PacketSender-用于發送/接收 TCP、UDP、SSL、HTTP 的網絡實用程序 PacketSender是一款開源的用于發送/接收 TCP、UDP、SSL、HTTP 的網絡實用程序&#xff0c;作者為dannagle。 其官網地址為&#xff1a;https://packetsender.com/&#xff0c;Github源代碼地址&#xff1a;htt…

【AI繪畫工具分別有哪些?】

目前有許多AI繪畫工具可供選擇&#xff0c;以下列舉了一些常見的AI繪畫工具&#xff1a; 1. DeepArt.io&#xff1a;該工具使用深度學習算法生成藝術風格的圖像&#xff0c;并可以將輸入圖像與指定的藝術風格進行合并。 2. Prisma&#xff1a;這是一款非常流行的AI繪畫應用&a…

SQL Server —— While語句循環

一&#xff1a;簡介 while 循環是有條件的循環控制語句。滿足條件后&#xff0c;再執行循環體中的SQL語句。 while: break, 如果有多條語句可以在while后面添加begin-end。關于while的語法 while(條件) -- begin -- 語句1 -- 語句2 -- break 根據情況是否添加break -- end 二…

leetcode日記(32)字符串相乘

做了很久很久……真的太繁瑣了&#xff01;&#xff01; class Solution { public:string multiply(string num1, string num2) {string s;string str;if (num1 "0" || num2 "0") return "0";for(int inum2.size()-1;i>0;i--){int c2num2[…

Open CASCADE學習|全局屬性

目錄 1、概念解釋 質心&#xff1a; 重心&#xff1a; 慣性矩&#xff1a; 慣性矩陣&#xff1a; 主慣性矩&#xff1a; 靜態慣性矩&#xff1a; 2、API 1、概念解釋 質心&#xff1a; 質心是質量中心的簡稱&#xff0c;指物質系統上被認為質量集中于此的一個假想點。…

Qt:tabWidget控件

一、tabWidget用來做什么 tabWidget控件用來進行不同控件頁面的跳轉&#xff0c; 二、控件的一些函數功能 添加一個頁面&#xff0c;返回index int addTab(QWidget *widget, const QString &); int addTab(QWidget *widget, const QIcon& icon, const QString &…

pytest教程-11-初識fixture

領取資料&#xff0c;咨詢答疑&#xff0c;請?wei: June__Go 上一小節我們學習了使用allure生成html測試報告的方法&#xff0c;本小節我們講解一下pytest fixture測試夾具的使用方法。 前言 在做自動化的過程中&#xff0c;編寫用例時候需要用到用例的前置和用例的后置&a…

2024年了,抖店還能做嗎?適合新手嗎?

我是電商珠珠 現在已經24年了&#xff0c;抖店也已經發展了四年了。其中有很多在門外觀望的人&#xff0c;還在猶豫不決。認為抖店發展到今天&#xff0c;所有的紅利早已在20年的時候就消失殆盡了&#xff0c;特別是沒有經驗的如果入駐了&#xff0c;既不能享受平臺紅利&#…

后端程序員入門react筆記(四)-綜合運用,寫一個小demo

樣式模塊化 有時候我們會遇到這樣的問題&#xff0c;有兩個css對一個class聲明了樣式&#xff0c;這樣的話后引入的css會覆蓋前面的css樣式&#xff0c;導致樣式沖突&#xff0c;那么我們怎么解決這種問題呢&#xff0c;我們可以使用樣式的模塊化&#xff0c;我們起名一個inde…

全棧筆記_瀏覽器擴展篇(插件開發 - chrome瀏覽器proxy代理)

代理類型 常用的包括http、https、socks代理 配置權限 要讓擴展使用代理接口,需要聲明proxy權限: // manifest.json "permissions": ["proxy" ]設置代理服務器 chrome.proxy.settings.set({ scope: ‘regular’, value: 代理配置},回調函數) 代理配…

【前端面經2】京東一面

題目來源&#xff1a;牛客網 自我介紹 動態參數解析的解決方案 對于動態部分使用…args進行接受&#xff0c;可以把動態部分提取成數組 前端安全問題 CDN劫持 內容安全策略CSP 安全沙箱 Iframe 跨站腳本攻擊XSS 攻擊者通過在目標網站上注入惡意腳本&#xff0c;使之在…

OpenHarmony驅動框架HDF中設備管理服務構建過程詳解

前言 如下圖&#xff0c;開源鴻蒙系統驅動框架HDF在內核中的實現&#xff0c;可以分為向用戶層提供設備服務的管理模塊&#xff08;Manager&#xff09;&#xff0c;和實際管理硬件的Host模塊。 Manager分為DeviceManageService和 DeviceServiceManage&#xff0c;前者負責提供…

1.WEB滲透測試-前置基礎知識-ip地址

ip地址&#xff1a; ip地址指的是互聯網協議地址&#xff0c;是IP協議提供的一種統一的地址格式&#xff0c;以每一臺聯網的主機都有一個對應的ip地址&#xff0c;ip地址也可以理解為分配給用戶上網使用的網際協議的設備的數字標簽。通俗的來說就是你打電話時候的每個人都有自己…

AIGC 實戰:如何使用 Docker 在 Ollama 上離線運行大模型(LLM)

Ollama簡介 Ollama 是一個開源平臺&#xff0c;用于管理和運行各種大型語言模型 (LLM)&#xff0c;例如 Llama 2、Mistral 和 Tinyllama。它提供命令行界面 (CLI) 用于安裝、模型管理和交互。您可以使用 Ollama 根據您的需求下載、加載和運行不同的 LLM 模型。 Docker簡介 D…

在Mac上搭建MongoDB環境

最近工作中需要裝MongoDB環境&#xff0c;搭建過程中遇到了一些問題&#xff0c;在這里記錄一下安裝MongoDB環境的方法以及問題的解決方法。有兩種安裝MongoDB的方法&#xff1a;brew安裝和手動安裝。 目錄 使用Homebrew安裝MongoDB 手動安裝MongoDB&#xff08;不使用Homebr…

備戰藍橋杯 Day11(滾動數組優化+完全背包)

01背包的滾動數組優化 【題目描述】 經典0—1背包問題,有n個物品&#xff0c;編號為i的物品的重量為w[i]&#xff0c;價值為c[i]&#xff0c;現在要從這些物品中選一些物品裝到一個容量為m的背包中&#xff0c;使得背包內物體在總重量不超過m的前提下價值盡量大。 #include&…

python_數據分析_numpy庫

一、創建ndarray *ndarray是NumPy中表示數組的重要類型 1、使用np.array()創建 *參數列表&#xff1a;[1,2,3,4] 注&#xff1a;(1)、numpy默認ndarray的所有元素的類型是相同的 ? (2)、如果傳入的數據類型不同&#xff0c;會被按照優先級強制轉換為同一類型&#xff0c;其…