call和applay的区别

call和applay的区别是什么

  1. call applay 都是function原型上的方法 都是改变函数的this指向
  2. fn.call(obj,1,2,3) 参数是不定的 传给函数的参数是一个一个的传递的
  3. fn.applay(obj,[1,2,3]) 参数只有两个 传给函数的参数是用一个数组包裹起来传递的

除了这两个 bind也可以改变this的指向 只不过bind不会立马执行函数 只是先改变this的指向

call和applay哪个性能更好

性能:call 性能要好一点
别人测试过的:当给函数传的参数为3个时,两个的性能差不多,当大于3个的时候,call的性能更好一点,所以开发可以使用call好一点

/* 
let arr = [10,20,30]
let obj = {}
function fn(x,y,z) {}
fn.applay(obj,arr) // x=10 y=20 z=30
fn.call(obj,arr) // x=[10,20,30] y=z=undefined
fn.call(obj,...arr) // x=10 y=20 z=30 基于es6的展开运算符
*/

/* 
性能测试(只供参考):
    任何性能测试都与测试环境有关,例如:CPU\内存\GPU等电脑,当前性能不会有相同的情况,不同的浏览器也会导致性能上的不同:
*/

// 只到毫秒
let time1 = new Date().getTime()
for(var i= 0;i<10;i++) {
    
}
let time2 = new Date().getTime()
console.log(time2 - time1)

// 更精确 
console.time('A')
for (var i = 0; i < 10; i++) {}
console.timeEnd('A')

// console.profile(),在火狐浏览器中安装FireBug,可以更精准的获取到程序每一个步骤所消耗的时间
console.profile();
for (var i = 0; i < 100000000; i++) {}
console.profileEnd();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值