一、函数作用域
(结合bind,call,apply方法),手动改变this的指向
1.修改函数的this的指向,并执行这个函数
题目描述
将函数 fn 的执行上下文改为 obj,返回 fn 执行后的值
如果使用bind,需要将bind以后的函数立即执行
//主要有三种答案。
function alterContext(fn, obj) {
return fn.bind(obj)();//.bind()返回的是一个函数,所以需要立即执行。 }
function alterContext(fn, obj) {
return fn.call(obj);
}
function alterContext(fn, obj) {
return fn.apply(obj);
}
1
2
3
4
5
6
7
8
9
10
11
2.修改函数的this的指向,并返回这个函数
题目描述
封装函数 f,使 f 的 this 指向指定的对象
function bindThis(f, oTarget) {
if (f.bind){//判断是否支持bind方法
return f.bind(oTarget);//返回bind函数
} else {//不支持bind方法
return function(){//因为call/apply会立即执行,所以要加一个匿名函数,两层return
return f.call(oTarget,arguments);
}
}
}
---------------------
【转载,仅作分享,侵删】
作者:juwuyu
来源:CSDN
原文:https://blog.csdn.net/weixin_28900307/article/details/88822640
版权声明:本文为博主原创文章,转载请附上博文链接!
|
|