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()方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。这里的目的是取第一个参数作为构造函数,然后后面参数作为构造参数。如果你直接取第一个参数,就会把构造函数也作为构造函数的参数扔进去,所有不能直接取。

猛跑小猪
TA贡献1858条经验 获得超8个赞
在你调用的时候_new(Object,a,b,c)varObject=function(a,b,c){};Object是你的原型,后面是你构造函数的参数,所以arguments要把第一个排除掉,不需要再原型
添加回答
举报
0/150
提交
取消