> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 시뮬레이션 push_javascript 트릭

JavaScript 시뮬레이션 push_javascript 트릭

WBOY
풀어 주다: 2016-05-16 15:12:02
원래의
1242명이 탐색했습니다.

작업: 먼저 변수 var arr = [0,1,2,3,4,5]를 정의하여 이 배열에서 5 뒤에 뭔가를 추가하는 푸시 메서드를 시뮬레이션하려고 합니다. 우리는 어떻게 해야 할까요? 생각할 시간을 5분 드리겠습니다. 생각하기 전에 아래를 내려다보지 마십시오.

분석: 이 배열의 끝에 무언가를 추가하고 싶습니다. 핵심은 요소의 마지막 위치를 찾는 방법입니다. 마지막 위치를 먼저 고려하지 말고 먼저 배열의 내용에 액세스하는 방법을 생각해 봅시다. 이 배열보다 큰 인덱스에 액세스하면 정의되지 않습니다. 간단히 말해, 그러한 인덱스가 없으면 정의되지 않습니다. 이 배열의 인덱스에 계속 1을 추가하면 정의되지 않은 위치가 우리가 찾고 있는 위치입니까? 더 나은 사용 방법 길이 속성은 이 배열의 길이를 얻을 수 있습니다. 그러면 이 길이는 이 배열의 인덱스 + 1입니다. 우리는 이 인덱스에 콘텐츠를 추가하고 싶습니다.

코드:

var arr = [0,1,2,3,4,5];
arr.length 获取这个数组的最后位置
로그인 후 복사

작업: 이제 배열의 마지막 위치를 얻었으므로 여기에 콘텐츠를 추가할 수 있습니다. 그러면 어떻게 추가할까요? 추가 대상 및 추가 방법.

분석: 이제 배열에 콘텐츠를 추가하는 방법에 대해 생각해 보세요. 얻은 길이는 우리가 추가하려는 위치입니다.

합성:

var arr = [0,1,2,3,4,5];
function Push(value){
arr[arr.length] = value;
}
Push(6);
console.log(arr); //[0, 1, 2, 3, 4, 5, 6]
로그인 후 복사

작업: 이제 콘텐츠를 추가할 수 있지만 한 번에 하나씩만 추가할 수 있습니다. 어떻게 해야 하나요?

분석: 갑자기 옛 친구가 그리워요. 이 오랜 친구는 우리가 반복적인 일을 완료하는 데 도움을 줄 수 있으니 그에게 도움을 요청합시다.

코드:

분석: 이것을 어떻게 써야 할까요? 내가 얼마나 작습니까? 우리가 더한 만큼인가요? 그러면 몇 비트를 추가해야 할까요? 우리는 정말 모르는 것 같지만, 오랜 친구는 자신이 우리가 전달하는 매개변수를 얻을 수 있는 인수이고, 의사 배열이라는 것을 알고 있습니다. 즉, 길이 속성을 배열처럼 사용할 수도 있다는 뜻입니다. 전달하는 매개변수를 가져옵니다. 실제 매개변수 길이입니다.

코드:

for(var i=0;i<arguments.length;i++){}
로그인 후 복사

분석: 이제 문제는 어떤 콘텐츠를 어디에 추가할 것인가 하는 것입니다. 작업으로 돌아가서 전달한 콘텐츠를 배열의 마지막 위치에 추가하시겠습니까? 그러면 콘텐츠를 어떻게 얻을 수 있습니까? 우리는 인수가 그 내용을 얻을 수 있다고 말한 것 같습니다.

코드:

var arr = [0,1,2,3,4,5];
function Push{
for(var i=0;i<arguments.length;i++){
arr[arr.length] = arguments[i];
}
}
Push(6,7,8);
로그인 후 복사

완료되었습니다.

과외활동 확대: 기초지식을 갖춘 친구들
좋아, 작업이 완료되었지만 이제 문제는 이 코드가 배열 arr만 제공할 수 있다는 것입니다. 모든 배열에 대해 이 함수를 제공하려면 이 메서드를 배열의 프로토타입에 추가해야 합니다.

var arr = [0,1,2,3,4,5];

Array.prototype.Push = function{
for(var i=0;i<arguments.length;i++){
this[this.length] = arguments[i];
}
}
arr.Push(1,2,3)
로그인 후 복사

안의 arr을 이것으로 바꾸세요. 이것은 누가 부르든 간에 이 내용을 js에서 완전히 이해하기 위해 읽으면 됩니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿