Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能帮我理解吗?JavaScript';拼接';原型对象中的方法_Javascript - Fatal编程技术网

有人能帮我理解吗?JavaScript';拼接';原型对象中的方法

有人能帮我理解吗?JavaScript';拼接';原型对象中的方法,javascript,Javascript,有人能帮我理解吗?当我在原型方法中使用“splice”时,控制台日志中显示的结果是“select[div#index]”,没有“splice”,这看起来像是“select{0:div#index,length:1}” 照片: 脚本: (函数(){ var doc=单据; //这是为了考试 功能选择(sel){ if(sel){this.push(query(sel));} 归还这个; } 函数查询(选择器){ 设elems=[]; var el=文档查询选择器all(选择器); 对于(设i

有人能帮我理解吗?当我在原型方法中使用“splice”时,控制台日志中显示的结果是“select[div#index]”,没有“splice”,这看起来像是“select{0:div#index,length:1}”

照片:

脚本:

(函数(){
var doc=单据;
//这是为了考试
功能选择(sel){
if(sel){this.push(query(sel));}
归还这个;
}
函数查询(选择器){
设elems=[];
var el=文档查询选择器all(选择器);
对于(设i=el.length;i--;elems.unshift(el[i])){};
返回元素;
}
select.prototype={
长度:0,
推送:功能(elems){
[]推送应用(此,元素);
归还这个;
},
//这种方法
拼接:函数(){
[].splice.apply(此参数);
},   
};
窗口['Q']=函数(选择器){
返回新的选择(选择器);
}
控制台日志(窗口);
})();
Q(“#index”)
显示结果

它在
选择对象上使用函数,而不是在数组上使用函数。这很好,
splice
(和其他几个数组函数)是故意通用的。只要它视为
this
的对象具有
长度
和以数字字符串命名的属性,就像数组一样,它就可以工作

可能值得一提的是,它使用
splice
的方式过于复杂(甚至有点)低效(它创建并丢弃了一个完全没有意义的数组),并且不会像数组上的
splice
那样返回删除的元素(因为它不返回
Array.prototype.splice
)的返回值。这:

应该是:

splice: Array.prototype.splice
例如:

(函数(){
var doc=单据;
//这是为了考试
功能选择(sel){
if(sel){this.push(query(sel));}
归还这个;
}
函数查询(选择器){
设elems=[];
var el=文档查询选择器all(选择器);
对于(设i=el.length;i--;elems.unshift(el[i])){};
返回元素;
}
select.prototype={
长度:0,
推送:功能(elems){
[]推送应用(此,元素);
归还这个;
},
/*
拼接:函数(){
[].splice.apply(此参数);
},
*/
接头:Array.prototype.splice
};
窗口['Q']=函数(选择器){
返回新的选择(选择器);
}
})();
常数x=Q(“.foo”);
x、 拼接(0,3);
对于(设n=0;n
1
2.
3.
4.
5.
6
splice: function () {
     [].splice.apply(this, arguments);
},
splice: Array.prototype.splice