码迷,mamicode.com
首页 > 移动开发 > 详细

call和apply的使用

时间:2020-03-14 21:54:00      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:不同   使用数组   第一个   log   调用   test   实参   传参   改变   

call和apply的作用1:调用方法,和直接调用的效果是一样的

function test() {
    console.log(‘test‘)  
}

test()  // test
test.call()  // test
test.apply() // test

 

call和apply的作用2:改变this的指向

call和apply传入的第一个参数,把参数的this指向这个传入的实参

test(){
    console.log(this)  
}

var obj = {name:‘zs‘}
test()  // this指向window
test.call(obj)  // this指向obj
test.apply(obj)  // this指向obj

 

call和apply可以传入其他参数(非第一个参数),传参方式不同

call传入的其他参数,直接传。apply需要传数组

test(a,b){
    console.log(a)
    console.log(b)
}

var obj =  {name:‘zs‘}

test.call(obj,2,3)   // call直接传2和3,打印2 ,3
test.apply(obj,[2,3])  // apply传数组,打印2,3

 

call的实际用法:

获取来的dom元素,不具有数组的特性,不能使用数组的方法,例如pop,push等

可以通过一个方法把获取来的dom元素转换成数组,使它可以使用数组的方法

Array.prototype.slice.call(document.querySelector(‘div‘))

这样获取的dom元素就是一个数组,可以使用数组的方法

 

call和apply的使用

标签:不同   使用数组   第一个   log   调用   test   实参   传参   改变   

原文地址:https://www.cnblogs.com/luguankun/p/12494411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!