this是指JavaScript语言的一个关键字。在函数运行时,自动生成一个内部对象,只能在函数内部中使用。随着函数使用场合的不同,this的值也会发生变化,指向是不确定的。指向是可以改变的。不过有一个总的规则,this指的是调用函数的那个对象(谁调用的,this就是指向的谁)。

一:普通的函数。在普通的函数中使用的this是指window,可以理解为没有调用者

function fun1(){    console.log(this);};fun1(); // output:window对象

二:不过需要的注意的地方,如果局部函数内使用严格模式的话,所获取到的this就是undefined

function fun(){    "use strict"; // 使用了严格模式    console.log(this); // output:undefined};fun();

三、回调函数(一个函数作为参数被传递给另外一个函数,就可以理解为回调函数)

function test(v){    console.log(this);};function f2(callback,v){    callback(v);};f2(test,'hello'); // output:window//等同于f2(function(v){console.log(v)},'hello');

2.回调函数第二个使用场景

var arr = [1,2,3,4,5,6].filter(function(item,index){    console.log(this); // output:window})

四:this存在数组里面

function f3(){    console.log(this);};var arr = [f3,4,5,6];arr[0](); // output [ƒ, 4, 5, 6]  notice:输出的是调用者本身

不过需要注意的地方

function f2(){    console.log(this);};var arr2 = [f2,4,5,6];var f = arr2[0];f();

五:this在对象object上

var obj = {    say:function(){        console.log(this);}};obj.say(); // output: {say: ƒ}

六:在构造函数中,所指的this不是构造函数本身

function Fun(name,age){    this.name = name;    this.age = age;    this.action = function(){console.log(this)}};var fun2 = new Fun("wanguiping",19);fun2.action(); // output: Fun {name: "wanguiping", age: 19, action: ƒ}

下一篇介绍this指向的改变和绑定!

this指向_前端必须知道的this指向问题相关推荐

  1. dbeaver 设置编码_初学者必须知道的idea设置

    初学者必须知道的idea设置 解决输入法卡住的问题 使用idea的时候中文搜狗输入法会卡住,在安装路径下有两个jre文件夹,32位系统改jre32,64位系统改jre64,重命名一下文件夹就好了. 修 ...

  2. 学习_你必须知道的.net2_第四章_一切从IL开始

    IL体验中心:  1: .class表示是一个类  ;  .public表示访问权限  ; auto表示程序加载时内存由CLR决定的,而不是程序本身 .ansi实现托管与非托管代码的无缝转换:   . ...

  3. xcode 快捷_您必须知道的Xcode快捷方式

    xcode 快捷 Knowing the Xcode shortcuts would improve your speed and boost your productivity. Today, we ...

  4. java泛型常用特点_?你必须知道的Java泛型

    前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin3923282... 种一棵树最好的时间是十年前,其次是现在 我知道很多人不玩qq了,但是怀旧一下,欢 ...

  5. 统计各部门的薪水总和_你必须知道的SAP中统计指标设置和应用

    第一节统计指标 统计指标是指反映总体现象数量特征的概念.它包括三个构成要素:指标名称,计量单位,计算方法,统计指标通常用来做分配分摊系数依据. 图1-[1]:手工计划创建统计指标计划格式的配置. 图1 ...

  6. 二叉树的字符图形显示程序_每个程序员都必须知道的8种通用数据结构

    作者:IT-Evan https://www.cnblogs.com/IT-Evan/p/12444968.html 数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操 ...

  7. 精确的数据访问冲突_每个程序员都必须知道的8种通用数据结构

    快速介绍8种常用数据结构 数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作. 数据结构在计算机科学和软件工程领域具有广泛而多样的用途. 几乎所有已开发的程序或软件系 ...

  8. c 多文件全局变量_必须知道的C语言知识细节:C程序编译后内存到底是如何布局...

    「今天是学习C语言第 116 天」 当你选择了一种语言,意味着你还选择了一组技术.一个社区.--Joshua Bloch C语言程序编译以后,代码和数据都必须存放在内存中由CPU执行.理解C程序内存是 ...

  9. [转]做网站必须知道的4个基本常识和小窍门

    转自:超赞!做网站必须知道的4个基本常识和小窍门 很多同学只会设计网站,但是却不知道整个建站的流程.域名.空间.备案等等.互联网时代,长点基本网建知识和小窍门,是必须的.所谓知己知彼,方能百战不殆.今 ...

最新文章

  1. [文档].Altera – SOPC Builder组件开发攻略
  2. Leetcode: Intersection of Two Arrays
  3. python 获取文件列表
  4. 数据库的使用你可能忽略了这些 (续)
  5. 工业以太网交换机故障的排障步骤
  6. 新手上路之django项目开发(二)-----引入静态文件
  7. 永中向香港博览会主办方演示云办公(转载)
  8. Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法[转]
  9. acm 3278(poj4001)
  10. python 读取并显示图片,用plt 同时显示多幅图像
  11. 【RLchina第四讲】Model-Based Reinforcement Learning
  12. 批量下载GLDAS数据
  13. MathType删除注册表
  14. 儿童计算机编程竞赛,一年获全国少儿编程比赛一等奖,他是怎么做到的?
  15. 微信商户中查看 appid
  16. 统计数组中英文大写字母,小写字母,数字,空格的个数。
  17. 新浪微博技术分享:微博短视频服务的优化实践之路
  18. 海洋cms php环境 多少,海洋cms
  19. 2023年软考时间流程安排:
  20. c# 无法检索解密密钥_使用C#检索Windows产品密钥

热门文章

  1. 要成为linux网站运维工程师必须要掌握的技能
  2. WCF中的REST是什么
  3. 一步一个脚印学习WCF系列之WCF概要—WCF与SOA(二)
  4. [Z]在线版本控制之SubVersion与MyEclipse整合
  5. mysql 绿色安装 ubuntu_Ubuntu免安装配置MySQL
  6. linux下虚拟光驱,求助:谁有Linux下的虚拟光驱软件?
  7. 天 月_财务结算专业术语快来学习!月结和月结30天的区别
  8. 火狐marquee_火狐不支持marquee解决方案
  9. python创建一个空的dataframe_python - 创建一个空的Pandas DataFrame,然后填充它?
  10. 2021-秋招你准备好了吗?软件测试面试题