huanxuan163 2017-07-14 11:30 采纳率: 0%
浏览 1150
已采纳

请问JS中函数的执行,用apply(或call)和普通调用的区别?

function f(arg){
……………………
}
f(arg);//执行函数f
f.apply(this,arg)

f.call(this,arg)
//最近遇到一个问题就是写f(arg)他会出错,写下面那两种不出错
写f.apply(null.arg)
或者 var obj=new Object(); f.apply(obj,arg) 等都没错,反正只要传进一个域对象行了
管你传什么
不明白啊 难道f(arg)是没有作用域的吗还是怎么着?

  • 写回答

2条回答 默认 最新

  • 张大教主 2017-07-18 12:03
    关注
    f.apply(this,arg) this代表当前类要执行f类中的内容:
    如 定义一个类:function man(sex,age){
        this.sex=sex;this.age=age;
    }
    那么调用man类中内容的方法如下:
    apply:
    function human(sex,age){
        man.apply(this,arguments);//this代表当前human类,去执行man类中的内容,arguments为sex,age参数数组
    }
    call:
    function human(sex,age){
        man.apply(this,sex,age);//this代表当前human类,去执行man类中的内容,arguments为sex,age参数数组
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 10月11日

悬赏问题

  • ¥20 CST怎么把天线放在座椅环境中并仿真
  • ¥15 任务A:大数据平台搭建(容器环境)怎么做呢?
  • ¥15 r语言神经网络自变量重要性分析
  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?