博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
this的指向(简单描述版)
阅读量:7109 次
发布时间:2019-06-28

本文共 894 字,大约阅读时间需要 2 分钟。

this的指向(简单描述版)

函数的调用

在JS的面向对象中
this是表示
函数调用相关联的对象(函数的上下文)。所以要想了解
this的指向,我们先要清楚函数的调用的方式

1.作为函数调用

function add(a,b) {    return a + b;}add(1,2);

以上代码就是函数作为函数直接被调用,那么在这种情况下,函数上下文(this)就有两种可能性质

  • 在浏览器环境中,this指向了window对象
  • 在严格模式下将会是undefined

2.作为方法被调用

var method = {};method.add = function () {};method.add();

当一个函数被赋值给一个对象属性,并且通过对象属性引用的方式时候,函数就会被作为对象的方法被调用。那么在这种情况下,this指向的就是引用该方法的宿主对象

3.作为构造函数调用

let person = new Person();

在使用new的时候会有如下动作

  • 创建一个新对象
  • 该对象作为this参数传递给构造函数,成为构造函数的上下文
  • 新构造函数对象作为new的返回值

4.使用call,apply方法调用

function arguNum() {    var result = 0;    for(var i = 0; i < arguments.length; i++) {        result += arguments[i];    }    this.result = result;}var obj1 = {};var obj2 = {};arguNum.apply(obj1, [1,2,3]);  // 6arguNum.call(obj2, 1,2,3);  // 6

使用call,apply可以改变this的指向,call&apply区别在于传递的参数是通过什么方式,call传递的是参数列表,apply传递的是一个数组。

结语

关于this的指向是前端面试中经常出现的问题,以上只是暂时简短总结了一下结果而已,后面会对各个函数调用的方式进行深入解析。

转载地址:http://bovhl.baihongyu.com/

你可能感兴趣的文章
Lexus Extroic OpenCart 2.X 自适应主题模板 ABC-0648-01
查看>>
awk案例
查看>>
linux中vmstat命令详解
查看>>
软件测试基础知识整理三----白盒测试
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number
查看>>
linux网卡操作命令 ,查看Linux下网卡连接状态(up还是down)?
查看>>
CCNP学习之路之RSTP快速生成树协议
查看>>
yum安装与源码安装比较
查看>>
【C语言】第一个C语言小程序 —— 日期算法和万年历
查看>>
《高性能MySQL》學習筆記--索引
查看>>
BZOJ4894:天赋(矩阵树定理)
查看>>
Linux自动执行sh脚本
查看>>
转:消息队列
查看>>
Ansible
查看>>
软件测试Lab2 Selenium及自动化测试
查看>>
ubuntu配置lamp运行环境笔记
查看>>
Redis 数据库结构设计
查看>>
2016过狗菜刀下载 2016过狗刀 过狗菜刀下载
查看>>