javascript中call apply的区别
obj.call(thisObj, arg1, arg2, ...);
obj.apply(thisObj, [arg1, arg2, ...]);
两者作用一致,都是把obj(即this)绑定到thisObj,这时候thisObj具备了obj的属性和方法。或者说thisObj『继承』了obj的属性和方法。
唯一区别是apply接受的是数组参数,call接受的是连续参数。
function add(j, k){return j+k;
}function sub(j, k){return j-k;
}
我们在控制台运行:
add(5,3); //8
add.call(sub, 5, 3); //8
add.apply(sub, [5, 3]); //8sub(5, 3); //2
sub.call(add, 5, 3); //2
sub.apply(add, [5, 3]); //2
通过call和apply,我们可以实现对象继承。示例:
var Parent = function(){this.name = "yjc";this.age = 22;
}var child = {};console.log(child);//Object {} ,空对象Parent.call(child);console.log(child); //Object {name: "yjc", age: 22}
以上实现了对象的继承。
转载于:https://www.cnblogs.com/sunyujun/p/7133453.html
javascript中call apply的区别相关推荐
- JavaScript 中call apply 那点简单事
谈谈JavaScript 中call apply 那点简单事 平常是否遇到过call apply 的问题 比如说 怎么利用call.apply来求一个数组中最大或者最小值 如何利用call.apply ...
- 如何在JavaScript中使用apply(?),call(?)和bind(➰)方法
by Ashay Mandwarya ?️?? 由Ashay Mandwarya提供吗? 如何在JavaScript中使用apply(?),call(?)和bind(➰)方法 (How to use ...
- 浅谈JavaScript中的apply、call和bind
摘要 三种方法均可改变函数this关键字的指向. apply()接受一参数数组,返回函数执行的结果. call()接受一组参数,返回函数执行的结果. bind()接受一组参数,返回函数体.需在bind ...
- Javascript中的apply、call、bind
apply . call .bind 三者都是用来改变函数的this对象的指向的: apply . call .bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文: apply . ...
- 复习javascript中call,apply,bind的用法
一直很难理解js中的call apply bind,在w3schools,mdn阅读了,也看了很多相关的文章,今天我来写下我理解的call apply bind 首先创建一个函数 function m ...
- JavaScript中call,apply,bind方法的总结。
why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之前,通常会有这些问题. var a = {user:"追梦子",fn:fun ...
- 浅谈JavaScript中的apply,call和bind
apply,call,bine 这三兄弟经常让初学者感到疑惑.前两天准备面试时特地做了个比较,其实理解起来也不会太难. apply MDN上的定义: The apply() method calls ...
- javaScript中const,var,let区别与用法详解
业务场景:今天想从正则表达式数组对象取出几个参数的值,发现好多人都用的const声明的变量,这里一起总结一下吧. 上一篇-->前端使用正则表达式获取地址栏URL参数的值并将需要的参数值展示在页面 ...
- JavaScript中let和var区别详解
想要了解var(ES5)和let(ES6)区别,首先就要了解ES5下JS的变量提升 一.变量提升(声) 当浏览器开辟出供代码执行的栈内存后,代码并没有自上而下立即执行,而是继续做了一些事情:把当前作用 ...
最新文章
- mysql释放表空间
- 【转】HTTP Header 详解
- linux火狐浏览器49.0安装教程,firefox for linux
- 数据库-ADONET-在数据集DataSet中使用关系对象DataRelation处理关系
- LeetCode 392打劫房屋 python
- 38--合并两个排序的链表
- 机器数,原码,反码,补码,移码
- OpenCV2:总结篇 imgproc(图像处理模块)
- 硬盘全新安装windows 7
- gevent的同步与异步
- DRAM的动态刷新问题总结
- linux UVC and hardware viewer
- VC Redist Installer 1.6下载
- Debian中Nvidia驱动、Firefox、Flash以及alsa声卡驱动安装详解
- zz:保护眼睛的颜色和各种背景颜色设置方法
- 无线渗透-----aircrack-ng破解WEP加密
- Bouncy Castle 密码包的配置及使用详解
- Tableau 空难统计分析(十)人类历史上的事故数和死亡人数
- 微信打不开链接怎么办,微信跳转外部浏览器打开
- 计算机考研400分以上,考研400分是什么概念?
热门文章
- 前沿 | 张钹院士畅谈清华大学如何办人工智能专业
- 一文带你读懂Self-Supervised Learning(自监督学习)
- 计算机原理实验八位算术逻辑运算,8位算术逻辑运算计算机组成原理实验一
- matlab函数包_Matlab论文插图绘制的270种补充颜色
- golang for循环_10. Go语言流程控制:for 循环
- Mysql 数据 导入 导出
- Wireshark使用入门
- 主板没有rgb接口怎么接灯_性价比稳定的RGB水冷散热器:乔思伯天使眼TW2-240测评...
- ES6-set集合应用
- Springboot利用poi导出excel下载