博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
apply和call用法
阅读量:6249 次
发布时间:2019-06-22

本文共 1430 字,大约阅读时间需要 4 分钟。

apply语法

func.apply(name, [array])
  • 第一个参数指定函数体内this对象的指向.
  • 第二个参数为一个带下标的集合,可以是数组或类数组,apply方法把这个集合中的元素作为参数传递给被调用的函数
var func = function(a, b, c) {  console.log([a, b, c]); // [1,2,3]}func.apply(null, [1,2,3])

call语法

  • 第一个参数:代表函数体内this指向
  • 第二个参数:数量不固定,每个参数依次传入函数 ```javascript

```

当使用call或则apply的时候, 如果我们传入的第一个参数是null. 函数体内的this会指向默认的宿主对象,在游览器中则是window

var func = function( a, b, c ){  alert ( this === window );    // 输出true};func.apply( null, [ 1, 2, 3 ] );

但如果是在严格模式下,函数体内的this还是为null:

var func = function( a, b, c ){      "use strict";      alert ( this === null );     // 输出true}func.apply( null, [ 1, 2, 3 ] );

有时候我们使用call或者apply的目的不在于指定this指向,而是另有用途,比如借用其他对象的方法。

那么我们可以传入null来代替某个具体的对象:

Math.max.apply( null, [ 1, 2, 5, 3, 4 ] )    // 输出:5

call和apply的用途

var obj1={  name: '李小龙'}var obj2={  name: '萧薰'}window.name = 'window'var getName = function(){  console.log(this.name)};getName(); //输出:windowgetName.call(obj1); //输出:李小龙getName.call(obj2); //输出:萧薰

当执行getName.call( obj1 )这句代码时,getName函数体内的this就指向obj1对象

this 错误的情况

document.getElementById( 'div1' ).onclick = function(){    alert( this.id );            // 输出:div1    var func = function(){         alert ( this.id );        // 输出:undefined    }    func();};

修正this

document.getElementById( 'div1' ).onclick = function(){    var func = function(){          alert ( this.id );        // 输出:div1    }    func.call( this );};

原文链接:

转载于:https://www.cnblogs.com/lovellll/p/10109617.html

你可能感兴趣的文章
创业冲突的五种解决方法是_冲突管理的五种策略
查看>>
lsmw中文显示乱码_中文注释不能在keil 4/5中正常显示——都是方框或乱码?
查看>>
hcg值小于0.1_【原理】JavaScript 中 0.1 + 0.2 为什么不等于 0.3?
查看>>
springboot的jsp应该放在哪_健身小白用2个月亲身经历告诉你小白去健身房,应该做到哪几点...
查看>>
opencv表面缺陷检测_工业产品表面缺陷检测方法
查看>>
kettle使用数据库来生成序列_时间序列数据库Influxdb的使用
查看>>
配置babel_关于 Babel 你必须知道的
查看>>
数据丢失与重复_消息队列重复消费和数据丢失问题(石衫面试突击学习笔记)...
查看>>
摄像头 火狐_为什么谷歌浏览器打不开电脑摄像头?
查看>>
两张图片合成一张_ps技巧:大光比照片后期曝光合成技法
查看>>
码条形码属性_条码生成器如何批量生成code 11码
查看>>
和lua的效率对比测试_不同编程语言能耗不同?看这27种语言对比!
查看>>
让某控件失去焦点_常用基本控件测试用例(一)
查看>>
天气模式_今年台风活跃期即将结束!下周天气将开启“大变脸”模式
查看>>
扫码枪关闭常亮模式_生意好时最怕收银出故障,这几个扫码枪的常见问题你一定要知道...
查看>>
如何双击打开vivado工程_利用TCL重建vivado工程
查看>>
mysql的引双向链表_Mysql高手系列 - 第22篇:mysql索引原理详解(高手必备技能)
查看>>
mysql in 查询改成_MySQL not in嵌套查询改写成外连接方式
查看>>
mysql community安装_MySQL Community Server 5.7安装详细步骤
查看>>
python处理多行字符串_python多行字符串
查看>>