猿问

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

function_new(){
letnewObj={};
letConstructor=Array.prototype.shift.call(arguments);
//这里为什么不能直接letConstructor=arguments[0]呢?
newObj.__proto__=Constructor.prototype;
Constructor.apply(newObj,arguments);
returnnewObj;
}
胡说叔叔
浏览 272回答 2
2回答

慕婉清6462132

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

猛跑小猪

在你调用的时候_new(Object,a,b,c)varObject=function(a,b,c){};Object是你的原型,后面是你构造函数的参数,所以arguments要把第一个排除掉,不需要再原型
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答