文档章节

来说下apply和call

dfatxm
 dfatxm
发布于 2017/05/03 23:38
字数 208
阅读 36
收藏 0

EcmaScript3给Function的原型定义了两个方法: Function.prototype.apply和Function.prototype.call

call和apply的区别: 主要是传参方式的不同。 apply传入的是数组或类数组。

var func = function (a,b,c) {
   alert( [a,b,c] );
}

func.apply( null,[1,2,3] ) ;  // 输出[1,2,3]    第一个参数表示函数体内的this指向,null表示指向函数默认的宿主对象,在浏览器里是window, 如果用严格模式下,则会为null

func.call( null, 1,2,3 );  //也是输出 [1,2,3]

var func = function (a,b,c){
   'use strict';
   alert( this === null ); //输出true
}

var func = function (a,b,c){   
   alert( this === null ); //输出false  , this 是 window
}

//实例:借用其他对象的方法
Math.max.apply( null , [1,2,3,4,6,5] );   //6


//改变this的指向
var obj1 = {
   name: 'dongfang'
}
var obj2 = {
   name: 'zeS'
}

window.name = 'abc';

var getName = function(){
   console.log( this.name);
}

getName(); //输出abc
getName.apply(obj1);  //this指向obj1    输出dongfang
getName.apply(obj2);  //this.指向obj2   输出zeS


© 著作权归作者所有

共有 人打赏支持
dfatxm
粉丝 3
博文 66
码字总数 20630
作品 0
厦门
前端工程师
私信 提问
js call,apply,bind总结

一句话用来指定this的环境 1、call() 通过在call方法,给第一个参数添加要把b添加到哪个环境中,简单来说,this就会指向那个对象。 call方法除了第一个参数以外还可以添加多个参数,如下: ...

再这么说就哭了呦!
2017/10/27
0
0
js 中 call 跟 apply

结论 apply 跟 call 函数的主要不同在于参数,他们的使用场景一般如下: 多个参数时,使用 call 参数为数组时,使用 apply 无参数情况下,两者可以相互替代 call 函数原型: call ( thisObj...

JNG
2017/05/31
1
0
call,apply,bind方法的总结

一般用来指定this的环境,在没有学之前,通常会有这些问题。 var a = { user:"Lenovointer", fn:function(){ console.log(this.user); }}var b = a.fn;b(); //undefined 1、call() var a = ......

945996501
2018/06/26
0
0
Dispatch_apply (线程同步)

在某些特殊的开发场景下,我们可能会有这样的需求:n个任务并发。 比如我们需要以每个像素为基准来处理计算image。这个时候使用如下代码极有可能引起线程爆炸或死锁 使用Dispatch_apply来解决...

天心鸥兹
2017/09/04
0
0
apply与call性能分析

apply call 基本概念 稍有一些javascript基础的人应该对这两个函数都不会陌生,这里简单过一下基本概念。这两个方法一般都是用来调用一个函数时改变其内部this指向,换句话说:劫持一个对象的...

TokenYang
2017/09/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vue 对对象的属性进行修改时,不能渲染页面 vue.$set()

我在vue里的方法里给一个对象添加某个属性时,我console.log出来的是已经更改的object ,但是页面始终没有变化 原因如下: **受现代 JavaScript 的限制 (而且 Object.observe 也已经被废弃),...

Js_Mei
今天
2
0
开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
12
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
8
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
5
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部