A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一、函数作用域

(结合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
版权声明:本文为博主原创文章,转载请附上博文链接!

1 个回复

倒序浏览
奈斯,感谢分享!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马