작업: 먼저 변수 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에서 완전히 이해하기 위해 읽으면 됩니다.