我有疑问的是:multyply.apply(multyply,data);()里第一个参数

我有疑问的是:multyply.apply(multyply,data);()里第一个参数

<script>     // 在此处补充代码    var data = new Array(3,4,2,1);    function multyply(a,b,c,d){        return a*b*c*d;    }    var a1 = multyply.apply(multyply,data);    alert(a1);     </script>这段代码中,我有疑问的是这块:multyply.apply(multyply,data);我发现()里第一个参数,用this, window,document,multyply,结果都对?这是为什么 

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

因为window和document里面有这个方法,可以来调用,如下:

1、这是window对象:

http://img1.sycdn.imooc.com//climg/5b88da7400013f9509170065.jpg

http://img1.sycdn.imooc.com//climg/5b88d87d0001594705440082.jpg

2、这是document对象:

http://img1.sycdn.imooc.com//climg/5b88da210001995711270341.jpg

http://img1.sycdn.imooc.com//climg/5b88da590001c24505390108.jpg


http://img1.sycdn.imooc.com//climg/5b88da500001e77e05420128.jpg

自己可以打印一下。

  • 疯狂的蝴蝶3554667 提问者 #1
    大体理解是什么意思了,我是不是可以这样理解,this和multyply是肯定对的, window和document,之所以对,是因为他里面有multyply这个对象,但是,如果是一个 window和document没有的对象,是不是就不对了。所以,写this和相应的对象名是肯定对,window和document在某些条件下就是不对的。
    2018-08-31 15:00:56
  • 可以这样理解哦,但是如果要是强制指向其它对象的时候,这个对象必须是存在的。
    2018-08-31 17:03:15
好帮手慕星星 2018-08-31 13:13:48

Function.apply(obj,args)方法能接收两个参数 

obj:这个对象将代替Function类里this对象 

args:这个是数组,它将作为参数传给Function(args-->arguments) 

前面写什么对象,就是什么对象来调用这个函数,所以this, window,document,multyply这几个值,以及null都是正确的。祝学习愉快~~


  • 提问者 疯狂的蝴蝶3554667 #1
    this,multuply 这两个函数我明白,但是为什么window,document也对呢,他是如何代替function类里的this对象的。
    2018-08-31 13:45:10
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
进击JavaScript核心 2018
  • 参与学习       466    人
  • 提交作业       74    份
  • 解答问题       635    个

JavaScript不仅能实现静态页面到动态特效的转变,还能完成数据的动态交互,但是关于js到底功能有多强大,大家还是有所期待的,本路径将带你深入到js中,一一揭开JavaScript的神秘面纱。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师