javascript_javascript 기술 아래의 보충 string.format 함수

WBOY
풀어 주다: 2016-05-16 18:20:56
원래의
845명이 탐색했습니다.

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 배열로 변환될 수 있습니다:


코드 복사 코드는 다음과 같습니다:
function test() {
var args = Array.prototype.slice.call(arguments)
alert(args.length);
args.push("jeff"); push
args.push("wong ");
alert(args.length); //2
alert(args.pop()) //pop
alert(args.length) ; //1
}
test();

푸시와 팝 방법이 모두 작동하는 것을 볼 수 있습니다. 마찬가지로 Nodelist에도 비슷한 기능이 있습니다. NodeList를 배열로 변환하는 방법은 무엇입니까? Louzhu의 원글을 읽어보신 독자분들은 이게 다 진부하다고 생각하실 수도 있겠지만, IE에서는 Array.prototype.slice.call(nodelist)가 그렇지 않다는 점을 다시 한 번 말씀드리겠습니다. 마지막으로 NodeList 변환에 대해 다시 포스팅하겠습니다. 그리고 IE 및 기타 브라우저와 호환되는 방법은 이 기사를 종료합니다.

코드 복사 코드는 다음과 같습니다.
var nodelist =something;//NodeList 변수
var arr = null; //Array
try { //ie
arr = new Array(); >for (var i = 0; i < nodelist.length; i ) {
arr.push(nodelist[i])
}
} catch (e) {//다른 브라우저
arr = Array.prototype.slice .call(nodelist)
}


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