第五题:说说call()、apply()、bind()的使用和区分?
kujian opened this issue · 5 comments
kujian commented
var obj = {}//定义一个空的对象
function f(x,y){
console.log(x,y)
console.log(this) //this指向
}
ruochuan12 commented
刚好之前写过两篇文章,看完可以比较好的回答这个面试题
面试官问:能否模拟实现JS的bind方法
面试官问:能否模拟实现JS的call和apply方法
zxjzx commented
call,apply,bind的作用?
共同点:
- 改变this的指向
不同点:
- call 跟数组元素 **.call(obj,1,2,3,4,5)
- apply 跟数组 **.apply(obj,[1,2,3,4,5])
- bind 不能立即调用,需要加()调用 **.bind(obj)(1,2,3,4,5)
举例
function fun(name,age){
console.log(name,age);
console.log(this)
}
let obj = {name:'jj',age:18};
fun('zz',12); // this指向window
fun.call(obj,'jj',18); //this指向obj
fun.apply(obj,['jj',18]); //this指向obj
fun.bind(obj)('jj',18); //this指向obj
ruochuan12 commented
@zxjzx call
和apply
用法写反了~