作为前端程序员,this应该不会陌生,指执行期的上下文,以下总结了this的几种场景:

1、全局作用域下,this指的就是Window,在控制台输出this,返回的是Window对象

2、在一般函数中,this也是指代Window

function f(){
console.log(this);
}
f();

输出的依旧是Window对象

3、定义一个对象,在对象中定义成员函数,通过对象的形式调用函数时,this指代的就是这个对象,谁调用函数,this指代的就是谁。和情况2原理一样,f函数定义在全局作用域下,f() = window.f(),所以指向window

var obj = {   
  f:function(){
console.log(this);
}
};
obj.f();//输出obj
var obj2 = obj.f;
obj2();// =window.obj2();输出Window对象

4、在new的构造函数中,this指向正在创建的对象

function FF(){
console.log(this);//输出FF
}
var a = new FF();

5、我们说this要么是window,要么是调用函数的对象,那么this能否被改变呢?答案是可以的,call/apply,就可以改变this的指向,两者的相同点是第一个参数是被指向的对象,后面参数是函数执行所需要的参数,不同的地方是,call第一个参数之后的其他参数,依此往后排,逗号隔开,而apply后面的参数放在一个数组里,放在第二参数的位置,具体用法如下:

var obj = {
f:function(){
console.log(this);
}
};
var obj2 = obj.f;
obj.f();//输出obj
var objnew = {};
obj2.call(objnew, 参数1, 参数2, ....);//输出objnew
obj2.apply(objnew, [参数1, 参数2...]);//输出objnew

上面是对this的总结,应该可以在大部分情况下判断this指向的是谁了

this的用法-(2019-3)的更多相关文章

  1. Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法

    Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法 2018/11/06 Chenxin 资料说明 Django基础入 ...

  2. java 文件硬盘存取 练习

    读写文件操作 对字符流文件读写 1 写文件 FileOutputStream 节点类 负责写字节 OutputStreamWriter 转化类  负责字节到字符转换 BufferedWriter 装饰 ...

  3. 2019.6.13_SQL语句中----删除表数据drop、truncate和delete的用法

    一.SQL中的语法 1.drop table 表名称                         eg: drop table  dbo.Sys_Test   2.truncate table 表 ...

  4. 怎奈风云多变换,骚完一波还一波,记PHP mongodb驱动的2019年11月用法

    怎么,觉得pecl下一个扩展包,phpize make make install  php.ini里引用一下 mongodb.so就万事大吉了? Deeply Sorry!看到MongoDB\Driv ...

  5. pycharm的安装及用法

    俗话说的好:"工欲善其事,必先利其器",程序员写代码,肯定不能在编译器里面写,这有一个全宇宙最好的python编译器,叫做pycharm ,他的优点呢,大家可以看一下: 优点:1, ...

  6. pytest-allure-poco之allure全量详细用法

    allure简介 Allure Framework是一个灵活的轻量级多语言测试报告工具.貌似是目前最漂亮的一个报告工具 python版本及必要库或工具 python 3.7 pytest 4.3.1 ...

  7. 西安活动 | 2019年1月13号 "拥抱开源, 又见.NET" 线下交流活动报名进行中

    随着.NET Core的发布和开源,.NET又重新回到人们的视野..NET Core的下个3.0即将release,加入非常多的新功能,越来越拥抱变化,DevOps和Microservice的最佳实践 ...

  8. asyncio 基础用法

    asyncio 基础用法 python也是在python 3.4中引入了协程的概念.也通过这次整理更加深刻理解这个模块的使用 asyncio 是干什么的? asyncio是Python 3.4版本引入 ...

  9. 2019余姚培训游记+ZJOJD2划水记

    2019余姚培训游记 突然就想写一个... 注意:以下全是胡言乱语的自high,还有很多错别字 Day 0 来的比较早,早上就到了 上午把一本小说看完了,是一个年轻作者的处女作. 我觉得我第一本书一定 ...

  10. 末学者笔记--SSHD服务及SCP用法

    sshd服务讲解 1.SSHD服务 介绍:SSH 协议:安全外壳协议.为 Secure Shell 的缩写.SSH 为建立在应用层和传输层基础上的安全协议. 默认端口22 作用: sshd服务使用SS ...

随机推荐

  1. Python - MySQL 数据库连接 - PyMySQL 驱动 - 第二十五天

    序言 本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查. 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务 ...

  2. 海关单一窗口程序出现网络/MQ问题后自动修复处理

    单一窗口切换了2年多了,由于RabbitMQ或者网络的不稳定,或者升级或者网络调整,等等诸多问题导致了海关单一窗口程序会不定期的出现文件及回执自动处理的作业停止的问题. 最近终于想明白了,把日志监控起 ...

  3. PHP获得毫秒数

    因为前端需要写函数处理时间戳,比较麻烦,所以我们有的时候,需要接口传递毫秒数给前端. 下面可以通过这个函数来获得毫秒数 <?php function getMillisecond() { lis ...

  4. 软件设计师14-UML建模

    UML图 用例图 用例图:参与者.用例 用例之间的关系:包含关系.扩展关系.泛化关系. 用例的包含关系:查询数据外借信息包含用户登录. 用例的扩展关系:修改之前要先查询,则修改信息包含查询信息用例 类 ...

  5. ASP.NET Core系列:读取配置文件

    1. 控制台应用 新建一个控制台应用,添加两个Package: Install-Package Microsoft.Extensions.Configuration Install-Package M ...

  6. leetcode整理(一)

    leetcode题目整理,基本上不是最优解 1. 回文数 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 ...

  7. 6. [mmc subsystem] mmc core(第六章)——mmc core主模块

    一.说明 1.mmc core概述 mmc core主模块是mmc core的实现核心.也是本章的重点内容. 对应代码位置drivers/mmc/core/core.c. 其主要负责如下功能: mmc ...

  8. Win2003下安装PHP5.2.0+MySql5.0.27+PHPMyAdmin2.9.1的配置方法

    先下载所需要安装的东东~~ PHP 5.2.0 官方下载地址:http://www.php.net/downloads.php mysql-5.0.27 官方下载地址:http://dev.mysql ...

  9. python 正则表达式提取返回内容

    import re re.findall(' <input name="address_id" type="hidden" value="(.* ...

  10. mac下命令行安装node.js及切换不同版本nodejs

    摘自: http://www.cnblogs.com/ikuyka/p/5825762.html 前提是你电脑里已经装了node.js然后才能采用以下命令(以下代码最好不要同时运行) sudo n - ...