Andrew 님의 원글을 다시 읽어보니 원글 아래 댓글에서 이미 누군가가 게으름뱅이로 원글을 복사해서 답변을 했다는 사실에 놀랐습니다. 그는 또한 Array.prototype.slice에 주목해야 할 중요한 사항을 놓쳤다는 사실을 발견했습니다.
통합 설명은 다음과 같습니다.
1. string.format의 매개변수 개수
Andrew의 원문에서 누군가가 이미 지적했습니다.
eric d. 안녕하세요. 많은 내용을 더욱 명확하게 해주셔서 감사합니다.
참고: new RegExp("%([1-"args.length "])", "g"); 9개의 인수를 전달하면 실패합니다(정규 표현식은 "%([1-10])"이므로 %0 및 %1만 일치합니다).
쉬운 수정 방법은 다음과 같습니다.
함수 형식(문자열) { var args = 인수; var 패턴 = new RegExp("%([0-9] )", "g") return String(string).replace(pattern, function(match, index) { if ( index == 0 || index >= args.length) throw "형식 문자열에 잘못된 인덱스가 있습니다."; return args[index] })(잘못 따서 죄송합니다. 예와 간결함이 주요 목적이지만 가지고 있으면 좋은 기능입니다)
작성 날짜: 2009년 1월 20일 오전 12:01
글을 남긴 사람이 작성자에게 충분한 내용을 전달했습니다. "나는 그것이 단지 예일 뿐이고 간결함이 주요 목표라는 것을 이해하지만 그것은 훌륭한 기능입니다"라고 말했습니다. 알고 보니 원문에 정의된 정규식으로 검증할 수 있는 숫자의 범위는... 그렇군요. ㅎㅎ, 루주는 죄책감에 웃었습니다.
2. Array.prototype.slice
인수를 Array로 변환하는 방법은 Array.prototype.slice.call(arguments); 즉, 클래스를 통해서입니다. 배열 객체는 슬라이스를 통해 배열로 변환될 수 있습니다. 배열류 객체의 변환에 있어서는 Array의 프로토타입 메소드 슬라이스를 다시 기록하고 요약하는 것이 꼭 필요합니다. (1), 일반적인 사용법
Lou Zhu는 이전 기사에서 코드 조각을 통해 슬라이스 메서드를 소개했습니다. Slice(start, end): 배열 객체의 하위 집합을 반환하고, 인덱스는 start부터 시작합니다. 시작 포함) 및 끝에서 끝(끝 제외)은 영향을 받지 않습니다. 실제로 슬라이스 함수 내부에 배열 변수를 정의해야 한다고 과감하게 짐작할 수 있는데, 루프를 통해 해당 배열의 인덱스 값을 변수에 밀어넣고 최종적으로 배열 변수를 반환하게 된다.
(2), "배열이 아닙니다. 우리도 배열이 되고 싶습니다."
배열은 아니지만 인덱스를 기준으로 값을 지정할 수 있는 길이 속성이 있습니다. 이 글의 는 Real 배열로 변환될 수 있습니다: