日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

setTimeout函数this的指向

發布時間:2024/1/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 setTimeout函数this的指向 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、第一種解釋:

var obj = {name: 'name',foo: function () {console.log(this); // Object {name: "name"}setTimeout(function () {console.log(this); // Window}, 1000);},foo2: function () {console.log(this); // Object {name: "name"}setTimeout(() => {console.log(this); // Object {name: "name"}}, 2000);} }

為什么settimeout中的函數this指向window?而箭頭函數this指向Object ?

setTimeout中的function你可以理解為callback函數

function callback(){} setTimeout(callback,2000);

setTimout中的執行偽代碼可以理解為:

function setTimeout(fn,delay) { // 等待delay 毫秒 fn(); // <-- 調用位置! }

可以看到,他是直接調用fn(),前面沒有給任何對象綁定在一起,所以根據JavaScript的規則,它屬于默認綁定,自然就是window了,不知道你能否理解?如果你想改變他得綁定對象,可以使用bind去綁定。
再說說箭頭函數,在ES6中箭頭函數的this是指向父級作用域的(不是很準確),你的foo2中使用的箭頭函數,因此默認會指向obj,如果你將

var fooo = obj.foo2; fooo()

這樣this不會指向obj而是會指向window,若

var b = {name:''}; b.foo = obj.foo2; b.foo();

這樣呢this會指向b,
建議去查看一下this的四種綁定機制和作用域。

二、第二種解釋:

是因為settimeout在全局環境window中執行嗎?

對,是因為這個,簡單了說,函數中的this指向的是運行時的上下文,因此是window;而箭頭函數會幫你把this綁定到聲明時的上下文,因此還是Object

測試

在.vue文件中,setTimeout的this指向如下:

<template><div id="app"><router-view></router-view><main-tab-bar></main-tab-bar><div>---------------</div><button @click="click">按鈕</button></div> </template><script>import MainTabBar from "./components/MainTabBar";export default {name: 'App',components: {MainTabBar},methods: {click() {// console.log(this);//vue實例// setTimeout(() => {// console.log(this);//vue實例// }, 1000);// setTimeout(function() {// console.log(this);//window// }, 2000);// console.log(window);//window對象// window.setTimeout(function() {// console.log(this);//window對象// }, 3000);// const callback1 = function() {// console.log(this);//window// };// setTimeout(callback1, 0);const callback2 = () => {console.log(this);//};setTimeout(callback2, 0);//vue實例}}} </script><style>/*在style標簽里引用文件需要在import前面加個@*/@import "./assets/css/base.css";</style>

三、補充部分

關注公眾號:【深漂程序員小莊】:
內含豐富的學習資源和面試經驗(不限前端、java),還有學習交流群可加,并且還有各大廠大佬可一起交流學習,一起進步~添加小莊微信,回復【加群】,可加入互聯網技術交流群:

總結

以上是生活随笔為你收集整理的setTimeout函数this的指向的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲国产精品无码专区 | 97se在线视频| 日本网站在线 | 丁香花在线影院观看在线播放 | 91美女片黄 | 成全世界免费高清观看 | 男女男精品视频网站 | 国产精品亚洲二区在线观看 | 粉嫩av网站 | 精品在线视频免费观看 | 99久久久无码国产精品衣服 | 日日操日日操 | 成人精品黄段子 | 国产精品理论片 | 国产一级大片在线观看 | 久久一二 | 久久免费视频网站 | 亚洲国产精品视频在线 | 国产精品人妖 | 在线天堂av| 夜色视频网 | 波多野结衣在线影院 | 久久综合免费视频 | 中文天堂在线资源 | 国产3级在线 | 五月天色视频 | 日本黄网站色大片免费观看 | 美女啪啪网址 | 日韩在线免费播放 | 亚洲激情短视频 | 亚洲色欲色欲www | 欧美性生交xxxxx久久久 | 综合亚洲视频 | 2020亚洲男人天堂 | 亚洲一区二区视频在线 | 日韩一区二区三区精品视频 | 亚洲人在线播放 | 琪琪伦伦影院理论片 | 国产成人啪免费观看软件 | 亚洲国产精品影院 | 射久久久 | 海角官网 | 国产激情综合 | 九九热这里都是精品 | 免费精品无码AV片在线观看黄 | 玖玖国产精品视频 | 岛国福利视频 | 一个人在线观看免费视频www | jizzjizz日本免费视频 | 国产精品无码白浆高潮 | 丁香四月婷婷 | 波多野42部无码喷潮 | 波多野结衣毛片 | 亚洲久久天堂 | 久久久天堂国产精品女人 | 免费一级片网站 | 日本αv | 国产成人精品一二三区 | 免费成人av在线播放 | 在线看av的网址 | 小视频在线观看 | 日韩高清久久 | 亚洲狼人综合 | 麻豆三级视频 | 国产精品2019| 国产精品成人免费看片 | 日本一二三视频 | 天天成人| 日本亚洲网站 | 黄色aa级片 | 午夜寂寞视频 | 在线免费观看黄色片 | 欧美性生交xxxxxdddd | 中文字幕在线不卡 | 欧美另类视频在线 | 8x8ⅹ国产精品一区二区二区 | 网站av | 色呦呦免费观看 | 国语对白少妇spa私密按摩 | xxx性欧美| www.日韩视频 | 男人都懂的网站 | 国产人人爽 | 国产免费脚交足视频在线观看 | 日韩黄色网络 | 久久女同互慰一区二区三区 | 日韩精品免费一区二区在线观看 | 少妇高潮露脸国语对白 | 五月婷婷六月合 | 国产欧美激情 | 成人激情视频网站 | 一区二区三区四区免费 | 91性高潮久久久久久久 | 中文字幕人妻一区二区三区 | 一区二区三区不卡在线观看 | 日韩精品tv | 在线观看黄色国产 | 亚洲国产成人va在线观看天堂 | 黄色的视频网站 |