ES5函数新增的方法(call、apply、bind)
1.call()的使用
<script type="text/javascript">
var obj1 = {
name:'bob',
fn:function(){
console.log(this); //对象本身{name: "bob", fn: ƒ}
console.log(this.name); //bob
}
}
obj1.fn();
var obj2 = {
name:'call调用obj1的方法'
}
obj1.fn.call(obj2);//this--->{name: "call调用obj1的方法"} 相当于obj2.name;
obj1.fn.call(this); //指向window指向全局作用域
obj1.fn.call(window); //指向window
//call传递的第一个参数是this指向需要改变的对象,其实就是改变了函数调用时this指向,this指向第一个参数,第二个参数为传给该函数的实参(用逗号隔开)
</script>
2.apply 和 call 的区别
<script type="text/javascript">
var num = 0;
var obj1 ={
num:1,
fn:function(a,b){
console.log(this) //{num: 2}
console.log(this.num) //
console.log(a+b) //
}
}
var obj2 = {
num:2
}
obj1.fn.call(obj2,'10','20');
obj1.fn.apply(obj2,['10','20']);
//call和apply都能进行函数的调用,传参方式不一样call一般参数明确用逗号隔开,apply一般为参数不明确,参数以数组方式
</script>
3.找出数组的最大数(传统)
<script type="text/javascript">
var arr = [1,2,3,4,10];
var num =0;
for (var i=0;i<arr.length;i++) {
if(num<arr[i]){
num = arr[i]
}
}
console.log(num)
</script>
4.用 apply 找出数组的最大值和最小值
<script type="text/javascript">
var arr = [1,2,3,4,10];
var maxNum = Math.max.apply(window,arr);
var minNum = Math.min.apply(null,arr);
console.log(maxNum);//10
console.log(minNum);// 1
</script>
5.bind 的使用
<script type="text/javascript">
var num = 6;
var obj1 = {
num: 10,
fn: function(x, y) {
return this.num + x + y;
}
}
var obj2 = {
num: 8
}
var a = obj1.fn.bind(this, 1, 2)(); //改变函数调用时this指向,此时this是window;
console.log(a)//
</script>
ES5函数新增的方法(call、apply、bind)的更多相关文章
- 带你学习ES5中新增的方法
1. ES5中新增了一些方法,可以很方便的操作数组或者字符串,这些方法主要包括以下几个方面 数组方法 字符串方法 对象方法 2. 数组方法 迭代遍历方法:forEach().map().filter( ...
- 前端学习之回调函数、call方法、apply方法
今天学习的内容比较少,大部分时间是自己在写qq音乐和京东移动端的页面.现在说说今天学到的内容: 首先,回调函数,就是在函数内部中调用另外一个函数, 将一个函数当作参数传给另一个函数,被传的函数叫做回调 ...
- ES5对象新增的方法
Object.is()-----判断是否全等,和===一样Object.assign()-----对象的复制Object.keys()-----以数组的形式返回所有可遍历属性的键名,原型上的属性不能遍 ...
- Es5数组新增的方法及用法
1.forEachforEach是Array新方法中最基本的一个,就是遍历,循环.例如下面这个例子: [1, 2 ,3, 4].forEach(alert);等同于下面这个传统的for循环: var ...
- 《JS权威指南学习总结--8.7 函数属性、方法和构造函数》
内容要点: 在JS程序中,函数是值.对函数执行typeof运算会返回字符串 "function",但是函数是JS中特殊的对象.因为函数也是对象,它们也可以拥有属性和方法,就像普 ...
- Function.apply.bind()与Function.apply.bind()
1.Function.apply.bind(…) 我在学习promise部分的时候遇到了这样的代码: Promise.resolve([10,20]).then(Function.apply.bind ...
- 作用域链和函数内部this指向问题以及bind、call、apply方法
作用域链和函数内部this指向问题以及bind.call.apply方法 作用域链 作用域是相对于变量而言的, 其意义就在与查找变量(确定变量的来处, 变量是否可以访问到, 确定变量在当前位置是否可以 ...
- call,apply,bind——js权威指南函数属性和方法章节读书笔记
每个函数(即这两个方法是函数的方法)都包含两个非继承而来的方法: apply()和 call().参数明确,使用call.参数不明确,使用apply,可以遍历数组参数 1,call里面的参数是散开的, ...
- JS 的 call apply bind 方法
js的call apply bind 方法都很常见,目的都是为了改变某个方法的执行环境(context) call call([thisObj[,arg1[, arg2[, [,.argN]]]] ...
随机推荐
- 非常精彩的Silverlight 2控件样式
概述 大家是否觉的现在Silverlight 2提供的默认的控件不能满足自己的要求?好在Silverlight的控件可以运用皮肤,微软Silverlight控件的设计者的主管Corrina开发了几套非 ...
- [原创]Java生成Word文档
在开发文档系统或办公系统的过程中,有时候我们需要导出word文档.在网上发现了一个用PageOffice生成word文件的功能,就将这块拿出来和大家分享. 生成word文件与我们编辑word文档本质上 ...
- javascript之表格节点操作
<html> <div class='add'> 名字: <input type="" name=""&g ...
- python单元测试之unittest框架使用总结
一.什么是单元测试 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 比如对于函数abs(),我们可以编写的测试用例为: (1)输入正数,比如1.1.2.0.99,期待返回值与 ...
- NIO知识摘录
在 JDK 1. 4 中 新 加入 了 NIO( New Input/ Output) 类, 引入了一种基于通道和缓冲区的 I/O 方式,它可以使用 Native 函数库直接分配堆外内存,然后通过一个 ...
- 初识NDA
领导要签署保密协议,全是英文,叫我来翻译一下,这样便接触到了NDA,翻译过程中遇到不少问题,既然接触到了,还是多查查资料了解一下,以备以后的不时之需. NDA 全称 Non Disclosure Ag ...
- Asp.net MVC 使用PagedList(新的已更名 为X.PagedList.Mvc) 分页
在asp.net mvc 中,可以bootstrap来作为界面,自己来写分页程序.也可以使用PagedList(作者已更名为 X.PagedList.Mvc)来分页. 1.首先,在NuGet程序包管理 ...
- kubernetes1.13.1部署ingress-nginx-十一
一.Ingress 简介 (1) 在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的. 为了使外部的应用能够访问集群内的服务, 在Kubernetes ...
- 北京师范大学第十四届ACM决赛-重现赛 F:Training Plan(DP)
传送门 题意 将n个数分成m个集合,\(V_i表示max(x-y),x,y∈第\)i个集合,\(求minΣV_i\) 分析 我们先对难度排序,令dp[i][j]表示前i个数分成j个集合的最小费用 转移 ...
- [转载]OI省选算法汇总
简单列了一点 1.1 基本数据结构 数组 链表,双向链表 队列,单调队列,双端队列 栈,单调栈 1.2 中级数据结构 堆 并查集与带权并查集 hash 表 自然溢出 双hash 1.3 高级数据结构 ...