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

萌新求教!求大佬看看这个问题

萌新求教!求大佬看看这个问题

胡说叔叔 2019-08-09 23:20:12
function_new(){letnewObj={};letConstructor=Array.prototype.shift.call(arguments);//这里为什么不能直接letConstructor=arguments[0]呢?newObj.__proto__=Constructor.prototype;Constructor.apply(newObj,arguments);returnnewObj;}
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

shift()方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
这里的目的是取第一个参数作为构造函数,然后后面参数作为构造参数。
如果你直接取第一个参数,就会把构造函数也作为构造函数的参数扔进去,所有不能直接取。
                            
查看完整回答
反对 回复 2019-08-09
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

在你调用的时候_new(Object,a,b,c)varObject=function(a,b,c){};Object是你的原型,后面是你构造函数的参数,所以arguments要把第一个排除掉,不需要再原型
                            
查看完整回答
反对 回复 2019-08-09
  • 2 回答
  • 0 关注
  • 271 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号