apply和call方法的区别?各自有什么特点?

1.apply方法的使用

//改变this的指向
let o = {
name: 'Andy'
}
function fn(a,b) {
  console.log('你好呀')
  console.log( a + b)
}
fn.call(o, 2,7)
//用call实现继承
Fucntion Father(name,age) {
  this.name = name;
  this.age = age
 }
 Father.prototype.sing = function() {
   console.log('123')
 }
 Function Son(name,age,score) {
   this.score = score
   Father.call(this, name, age)
}
let son = new Son('李四', 18, 100)
console.log(son)

2.apply方法的使用

//改变this指向
let o = {
  name: '张三'
}
function fn() {
  console.log('123')
}
fn.apply(o, ['pink'])
//调用数组的方法
let arr = [2,7,99,64,3,0,408,88]
let max = Math.max.apply(Math,arr)
console.log(max)
let min = Math.min.apply(Math, arr)
console.log(min)

总结:
1.call方法和apply方法都可以调用函数,并且改变this的指向
2.call方法的第一个参数是this的指向,后面都是参数项,以逗号分隔
3.apply方法的第一个参数也是this的指向,后面的参数必须是一个数组
4.call可以结合prototype实现继承,继承父构造函数的方法
5.apply可以调用数组的方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值