为了账号安全,请及时绑定邮箱和手机立即绑定

apply与call应用场景

还是没搞懂什么时候需要用到apply与call方法

正在回答

3 回答

如果单纯只是在一个函数中调用另一个函数是没什么多大区别,apply / call 的最大作用就是改变上下文
比如说:
var name = "张三";

//在全局里定义函数func1
function getName(){
    return this.name;
}

//在对象里定义函数func2
var obj = {
    name:"李四",
    showName:function(){
        return getName.apply(this);    //在showName里调用getName,并将this从window改变为obj
    }
};

console.log(obj.showName());    //"李四"


2 回复 有任何疑惑可以回复我~
  1. 函数的调用需要用到对象。而上面说到的两个都是函数;

  2. 其实你可以简单地理解为这两个方法就是为了改变函数的作用域。

0 回复 有任何疑惑可以回复我~

假设有函数fun1,在另一个函数fun2中想实现fun1的效果,就可以用fun2(data){return fun1.apply(fun2,arguments)}

0 回复 有任何疑惑可以回复我~
#1

llo蛋蛋oll 提问者

那这样跟直接调用有什么区别呢?
2016-07-25 回复 有任何疑惑可以回复我~
#2

小白冲冲冲 回复 llo蛋蛋oll 提问者

这样看没什么区别,但有时需要绑定特殊的参数就有用处了
2016-09-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript深入浅出
  • 参与学习       281119    人
  • 解答问题       1020    个

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

进入课程

apply与call应用场景

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信