面试:JavaScript 中 call()、apply()、bind()用法以及区别

面试:JavaScript 中 call()、apply()、bind()用法以及区别

例一:

var name = 'ldh',age=18;
var obj= {
	name: 'kukudehu',
	objAge:this.age,
	myFun:function(){
		console.log( this.name+'年龄'+this.age);
	}
}

结果:

obj.objAge;  // 18
obj.myFun()  // kukudehu年龄 undefined

例二:

var fav='zzh';
function shows(){
	console.log(this.fav)
}

结果:

shows() //zzh

通过两个例子可以看出this指向的位置是不同的,例一this指向obj,例二this指向的是window;



1、有了上面的两个例子我们接下来看一下call()、apply()、bind()是怎么定义this的

如:

var name = '嘉文',age=31;
var obj= {
	name:'赵信',
	objAge:this.age,
	myFun:function(){
		console.log(this.name+"年龄"+this.age);
	}
}
var db={
	name:'德玛',
	age:99
}

结果:

obj.myFun.call(db);    // 德玛年龄 99
obj.myFun.apply(db);    // 德玛年龄 99
obj.myFun.bind(db)();   // 德玛年龄 99

注:bind方法后面有一对空格,所以得出结论bind返回的是一个函数必须调用才会执行。

如果对您有用请点亮,欢迎大家提出质疑疑问。kukudehu!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值