前端中的this,指的是什么?
想要学习前端,短时间内是比较困难的,web前端要学习的内容有很多,今天小编就为大家详细的介绍一下前端中的this,指的是什么?来看看下面的详细介绍。
前端中的this,指的是什么?
1.this是什么
this 是 JavaScript 中的一个关键字。依赖于函数调用的上下文条件,与函数被调用的方式有关。它指向谁,完全是由函数被调用的调用点来决定的。
所以,this,是在运行时绑定的,与编写时的绑定无关。随着函数使用场合的不同,this 的值也会发生变化。但是有一个总的原则:那就是this 总会指向调用函数的那个对象。
ES6中箭头函数的不绑定this。在判断this的指向时,将其看作普通的方法即可。普通的方法中的this指的是包含它的函数的this。这样一来this的指向就清楚了。
2.call/apply
this的指向可以通过调用对象的改变而改变,也可以通过call/apply来改变。
调用方法为Function.call(obj,...args)/Function.apply(obj,args)。它是说用obj这个上下文去调用Function。他们的区别在于args的类型。
3.原生实现call和apply
最简单的call是如何调用的 func.call(obj)(obj可能为null)。
分析该代码:某个函数要调用这个方法call,证明原生实现的方法mycall应该是函数原型上的一个方法。
因此原生call的实现方法如下:
myApply的实现和myCall的实现类似,只是传输参数的方式不同而已。
4.bind是什么
调用方法为func.bind(obj,[...args]),它会返回一个函数,这个函数是将obj绑定到func的this上之后返回的函数。
bind的调用方式为: func.bind(obj),因此同样还是要在函数的原型上面写。
原生实现bind的方法为:
5.结束语
this 总是指代了函数当前的运行环境,依赖于函数在调用时的上下文,只有在函数运行时才会进行绑定。想要判断this的指向,只需要记住:this 总会指向,调用函数的那个对象。
相关文章:

在SQLserver数据库里设置作业的步骤
在SQLserver数据库里设置作业(对数据库的表定期进行数据清理)的步骤 1.首先,要打开sql server代理的服务,在我的电脑,右键管理的服务打开,SQL Server 代理 (MSSQLSERVER)这个服务一定要打开。2.打开数据库&…

tomcat环境部署
1、java安装 #java env export JAVA_HOME/usr/local/src/jdk1.8.0_162 export JRE_HOME$JAVA_HOME/jre export PATH$JAVE_HOME/bin:$JAVA_HOME/bin:$PATH export CLASSPATH.:$JAVA_HOME/lib:$JAVA_HOME/lib 2、下载tomcat wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat…

【青少年编程】【一级】舞者凯希
Scratch竞赛交流群已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】,即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档)。 舞者凯…

UI设计APP图标设计规范介绍
UI设计所涉及的内容是比较多的,其中关于APP图标的设计就是常见的一种,UI设计师需要掌握不同的UI设计规范。今天小编就帮助大家了解下移动端APP图标设计规范: 很多设计师以为UI设计就是设计图标。虽然事实并非如此,但图标的设计…
Linux中断(interrupt)子系统之一:中断系统基本原理【转】
转自:http://blog.csdn.net/droidphone/article/details/7445825 这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层。内核版本基…

haskell的分数运算
孩子要上3年级了,里面涉及分数的部分,先准备一下。 haskell中涉及分数的模块是Ratio。 Ratio Synopsis Documentation data Ratio a Rational numbers, with numerator and denominator of some Integral type. Instances Typeable1 Ratio Integral a &g…

【复盘】端端,棒棒哒!
Scratch竞赛交流群已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】,即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档)。 昨晚2…

UI设计培训分享:平面广告设计中的文案表达技巧
UI设计培训包含平面设计,而且其中的应用频率是非常大的,本期小编就为大家详细的介绍一下平面广告设计中的文案表达技巧,希望下面的介绍能够帮助到正在学习UI设计的同学们。 平面广告设计中的文案表达技巧,平面广告中文案的编排创意…

工具类——md5
android的开发过程中,数据安全始终是个问题。这里记录一个md5的工具类,感觉挺好用的。 package com.xzw.test; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class TestMD5 { public static…

【青少年编程】【一级】小狗散步
Scratch竞赛交流群已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】,即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档)。 小狗散…

avplayer VS2008编译
错误1. typedef void * POINTER_64 PVOID64; 解决办法 typedef void *PVOID;typedef void * POINTER_64 PVOID64;在它之前加下:#define POINTER_64 __ptr64 官网给出的解决办法 打开winnt.h文件(这个是vc安装时带的文件) 找到 #include <…

Python培训分享:python爬虫可以用来做什么?
爬虫又被称为网络蜘蛛,它可以抓取我们页面的一些相关数据,近几年Python技术的到来,让我们对爬虫有了一个新的认知,那就是Python爬虫,下面我们就来看看python爬虫可以用来做什么? Python培训分享:python爬虫…

【字符串操作之】返回指定位置的字符和Unicode 字符代码 根据unicode返回字符→→charAt、charCodeAt和fromCharCode...
//charAt和charCodeAt分别返回指定位置处的字符和字符对应的unicode码 var str:String"abcdefg"; var str2str.charAt(1); var str3str.charCodeAt(1); trace(str2); //b trace(str3); //98 fromCharCode是个静态方法,根据unicode返回字符 var str:String…

E667:Fsync failed(how to solve)
今天在学习一个关闭icmp回显的配置时候,vim出现了Fsync failed这个问题! 下面来说一下我发生这种情况的原因(系统CentOS6.5),那时编辑完后先是输入“q”,正如我们所想,已修改过的配置它会提醒我要把数据写入…

【复盘】第一次灌鸡汤
Scratch竞赛交流群已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】,即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档)。 上周日…

Python中常用的数据分析工具(模块)有哪些?
本期Python培训分享:Python中常用的数据分析工具(模块)有哪些?Python本身的数据分析功能并不强,需要安装一些第三方的扩展库来增强它的能力。我们课程用到的库包括NumPy、Pandas、Matplotlib、Seaborn、NLTK等,接下来将针对相关库做一个简单…

Android应用中通过AIDL机制实现进程间的通讯实例
Android中,每个应用程序都有自己的进程,当需要在不同的进程之间传递对象时,该如何实现呢?显然,Java中是不支持跨进程内存共享的,因此要传递对象,需要把对象解析成操作系统能够理解的数据格式&am…

06 Scratch等级考试(一级)模拟题
Scratch竞赛交流群已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】,即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档)。 这是第…

区分BundleVersion和BundleShortVersionString
区分BundleVersion和BundleShortVersionString最近遇到了关于检查更新的版本问题了。问题出在了Info.Plist配置中的两个字段,BundleVersion和BundleShortVersionString。搞了两年的开发,第一次看到还有另一个字段的版本。由于版本检测升级的问题…

UI设计培训技术分享:配色秘籍
设计中颜色的使用是一个非常值得关注的问题,同样的构图、版式,但是不同的颜色搭配给人的感觉就完全不一样,色彩的冷暖,明暗变化琳琅满目,表达不同的氛围与情绪,对于新手设计来讲,配色是个不容小…

安全的Web主机iptables防火墙脚本
下面以自己的Web服务器举例说明之,系统的默认策略是INPUT为DROP,OUTPUT、FORWARD链为ACCEPT,DROP设置得比较宽松,因为我们知道出去的数据包比较安全;为了验证脚本的通用性,我特的查看了服务器的内核及iptab…

用户至上-阿里马马篇
最近经常在阿里巴巴的平台里活动,突然发现,支付宝病了。 当用户生成一单交易后,需要用支付宝支付时,如何保证是用户本人在操作呢? 当初,支付宝是国内第一家很好地解决这个问题的。 解决的途径主要是&#x…

【复盘】小朋友的奇思妙想
Scratch竞赛交流群已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】,即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档)。 上周日…

UI设计培训技术分享:搞定萌萌哒可爱图标
UI设计要学到的东西有很多,那么关于图标设计就是其中的一种,很多企业比较忠于萌萌哒的可爱图标,那么如何搞定萌萌哒可爱图标呢?来看看下面UI设计培训技术分享教程。 UI设计培训技术分享:搞定萌萌哒可爱图标 萌萌哒的图标制作有三…

远程处理Remoting
日程 ?应用程序域 ?Remoting和原理 ?编程式和管理式配置实例 用应用程序域 操作系统和运行库环境通常会在应用程序间提供某种形式的隔离。例如,Microsoft Windows 使用进程来隔离应用程序。为确保在一个应用程序中运行的代码不会对其他不相关的应用程序产生不良影…

Datawhale组队学习周报(第002周)
Datawhale组队学习周报(第002周) (一)当下 本周(02月22日~02月28日),我们正在进行5门开源内容的组队学习。一共建立了6个学习群,参与人数1080人。到目前为止,有4门课开…

LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍
LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍 LVS (Linux Virtual Server) LVS(Linux Virtual Server)其实就是针对高可伸缩、高可用网络服务的需求,给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,…

UI设计培训分享:设计当中的颜色运用
参加UI设计培训的同学应该都知道,颜色的搭配是学习UI设计非常重要的一步,颜色跟其他的东西一样,适量才会运用得当,如果在你的配色计划中坚持使用马克思三原色的话,你会得到更好的配色结果,为一个项目配色时…

《重构-改善既有代码的设计》读书笔记(二)
12、Lazy Class – 冗赘类 对于几乎没有用的类,运用inline class 将其功能移动。去除这些不值得维护的类。 13、Speculative Generality – 夸夸其谈未来性 对于你现在用不到,觉得总有一天会用到的代码,要警惕。用不上的装置总会挡我们的路&a…

css属性选择符的应用
注释:Internet Explorer 7 (以及更高版本)在规定了 !DOCTYPE 的情况下支持属性选择器。IE6 及更低的版本不支持属性选择器。 [title]{color:red;} //为带有 title 属性的所有元素设置样式: [title"website"]{color:r…