Array 해석.prototype.slice.call(arguments,0)
Array.prototype.slice.call(arguments, 0)에서 함수를 처리하는 데 사용되는 이 코드를 자주 볼 수 있습니다
인터넷에 많은 복사 스티커가'Array'라고 적혀 있다.prototype.slice.ll(arguments)는length 속성을 가진 대상을 수조로 변환할 수 있다.IE 아래의 노드 집합을 제외하고(ie 아래의dom 대상은com 대상의 형식으로 이루어지기 때문에 js 대상과com 대상은 변환할 수 없다)
관건:
1. Array는 구조 함수
2,arguments는 클래스 그룹의 대상이다(많은 그룹이 부족한 방법)
3. 콜은 한 대상이 다른 대상을 호출하는 방법을 사용한다.계승을 위해 콜 () 을 사용할 수 있습니다. 하나의 방법을 쓰고 다른 대상을 계승할 수 있습니다. (새로운 대상에서 이 방법을 다시 쓰는 것이 아니라)
4,slice는 하나의 수조에서 절단하고 새로운 수조로 돌아가며 절단된 수조를 수정하지 않습니다
so, 사실 본질은arguments라는 대상이 수조의slice라는 방법을 사용하여 매개 변수로 구성된 수조를 얻었다는 것이다(apply도 사용할 수 있다).
Array.prototype.slice.call(arguments, [0, arguments.length])
// prototype Array
Array.prototype.slice.call([1,2,3,4,5],0)// [1, 2, 3, 4, 5]
[].slice.call([1,2,3,4,5],1)// [2, 3, 4, 5]
// length
var a={length:2, 0:'first', 1:'second'};
Array.prototype.slice.call(a);// ["first", "second"]
var a={length:2, 0:'first', 1:'second'};
Array.prototype.slice.call(a,1);// ["second"]
var a={0:'first', 1:'second'};
Array.prototype.slice.call(a,1);// []
slice 대략적인 내부 구현
Array.prototype.slice = function(start,end){
var result = new Array();
start = start || 0;
end = end || this.length; //this , call , this , ,
for(var i = start; i < end; i++){
result.push(this[i]);
}
return result;
}
그룹 변환의 통용 함수
var toArray = function(s){
try{
return Array.prototype.slice.call(s);
} catch(e){
var arr = [];
for(var i = 0,len = s.length; i < len; i++){
//arr.push(s[i]);
arr[i] = s[i]; //console.timeEnd push
}
return arr;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
// prototype Array
Array.prototype.slice.call([1,2,3,4,5],0)// [1, 2, 3, 4, 5]
[].slice.call([1,2,3,4,5],1)// [2, 3, 4, 5]
// length
var a={length:2, 0:'first', 1:'second'};
Array.prototype.slice.call(a);// ["first", "second"]
var a={length:2, 0:'first', 1:'second'};
Array.prototype.slice.call(a,1);// ["second"]
var a={0:'first', 1:'second'};
Array.prototype.slice.call(a,1);// []
Array.prototype.slice = function(start,end){
var result = new Array();
start = start || 0;
end = end || this.length; //this , call , this , ,
for(var i = start; i < end; i++){
result.push(this[i]);
}
return result;
}
var toArray = function(s){
try{
return Array.prototype.slice.call(s);
} catch(e){
var arr = [];
for(var i = 0,len = s.length; i < len; i++){
//arr.push(s[i]);
arr[i] = s[i]; //console.timeEnd push
}
return arr;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.