JavaScript-callapply方法
要知道call和apply方法的用处,首先要知道什么是上下文
上下文分为全局上下文|函数上下文
全局上下文
无论是否在严格模式下(“use strict”),在全局执行上下文中(任何函数的外部)this都指向全局对象。
var a = 'A'
console.log(window.a) // A
this.b = 'B'
console.log(b) // B
console.log(window.b) // B
复制代码
函数上下文
在函数内部,this的值取决于函数被调用的方式
- 简单调用
不在严格模式下,且this的值不是由该调用来设置的,所以this默认指向全局对象
<pre><code>function fn(){return this
}
//在浏览器中的全局对象是window
fn() === window // true
//在node中的全局对象是global
fn() === global</code></pre>
复制代码
然而在严格模式下,this将保持它进入执行上下文时的值
function fn(){
"use strict"
return this
}
fn() === undefined //true复制代码
所以在严格模式下,this没有被执行上下文定义,它将保持undefined
如果想把this的值从一个上下文传到另一个,就需要适应call和apply
//将一个对象作为call和apply的第一个参数,this会被绑定到这个对象
var obj = {a: '郭嘉'}
var a = '郭奉孝'
function fn(){return this.a // this的值取决于函数调用的方式
}
fn() //'郭奉孝'
fn.call(obj) // '郭嘉'
fn.apply(obj) //'郭嘉'
复制代码
call和apply方法的作用完全一样,区别在于第二个参数的不同;call的第二个参数是单个元素,apply的第二个参数是一个数组
2. 作为对象的方法
当函数作为一个对象的方法时,this指向这个对象
3. 作为构造函数
当一个函数作为构造函数时(使用new关键字),this绑定到正在构造的新对象
[参考自MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/this)
转载于:https://juejin.im/post/5b3ae84b51882562161d8839
JavaScript-callapply方法相关推荐
- JavaScript的方法和技巧
摘自http://www.cnblogs.com/Jamedy/archive/2007/02/14/650079.html 有些时候你精通一门语言,但是会发现你其实整天在和其它语言打交道,也许你以为 ...
- js方式调用php_javascript调用PHP和PHP调用javascript的方法
javascript调用PHP和PHP调用javascript的方法 发布时间:2020-06-22 17:03:14 来源:亿速云 阅读:262 作者:Leah 这篇文章将为大家详细讲解有关java ...
- 异步与延迟加载JavaScript的方法
默认情况JavaScript是同步加载的,也就是JavaScript的加载是阻塞的,后面的元素要等待JavaScript加载完毕后才能进行再加载,有多种无阻赛下载JavaScript的方法. (1)d ...
- 前端必须学会的5个原生JavaScript对象方法
前端必须学会的5个原生JavaScript对象方法 JavaScript 随着node.js和基于JavaScript的各种框架的诞生,JavaScript在当今的互联网越来越受到人们的重视,今天我们 ...
- 谷歌浏览器如何启用java小脚本_各种浏览器开启JavaScript脚本方法
随着网站设计技术的发展,为了用户友好体验,大部分网站使用了JavaScript脚本设计,如果您的浏览器禁用或关闭的JavaScript支持,那么可能造成网站体验差或网站部分功能无法使用 下面提供10种 ...
- java 打开网页并运行脚本_各种浏览器开启JavaScript脚本方法
1.单击右上角的齿轮图标.从出现的菜单中选择Internet 选项. 2.单击安全选项卡.单击窗口底部的自定义级别按钮,弹出安全设置对话框. 3.找到脚本目录.单击JAVA 小程序下的启用选项,选择此 ...
- javascript创建对象方法总结
javascript创建对象方法的总结. 对象是什么? js中对象是"无序属性的集合,其属性可以包含基本值,对象或者函数",简单来说,它就是一个名值对,有key和value,val ...
- php 生成斜体字,JavaScript italics方法入门实例(把字符串显示为斜体)
这篇文章主要介绍了JavaScript italics方法入门实例,italics方法用于把字符串显示为斜体,需要的朋友可以参考下 JavaScript italics 方法 italics 方法返回 ...
- vba 执行网页javascript_Excel中使用JavaScript的方法
基础篇 Excel的缺省脚本语言是VBA,所以系统的一切接口理论上都是可以通过VBA脚本访问的,而使用其他脚本语言可能只能访问部分功能,这点是需要开发者明确的.但是Javascript脚本的好处是,其 ...
- js 数组从头添加到数组_如何从头开始实现JavaScript数组方法
js 数组从头添加到数组 介绍 (Introduction) JavaScript includes several functions for working with arrays that go ...
最新文章
- LLVM IR 理解
- Leetcode: Implement strStr()
- 刚刚字节跳动发布了1200个java岗位,平均薪资40k
- 《AR与VR开发实战》——2.7 3D物体识别
- centos7安装docker并配置阿里云镜像
- java对xml文件做增删改查------摘录
- Vue2+VueRouter2+webpack 构建项目实战(二):目录以及文件结构
- Skype 释出新的 Linux 客户端
- java poi 页码,apache poi页码
- 终极解决VS2015 安装失败问题,如 安装包损坏或丢失
- podman—网络设置、开机自启及加速器配置
- PYQT5:基于QsciScintilla的代码编辑器分析10--语法高亮颜色选择
- 华为U2000北向接口开发中遇到的坑——获取HW_MSTPInventory管理对象失败
- java矩阵连乘算法_矩阵连乘(java实现)
- HDU4889 Scary Path Finding Algorithm
- 用Python生成人人贷借款理由词云图
- python自定义函数实例计算1-n的偶偶数和_Python入门--11--自定义函数
- 连续环境下基于enhanced GA算法的多目标多机器人路径算法
- Python性能分析入门——cProfile、可视化、逐行分析、内存分析
- 7、TM4单片机学习之串口功能