문자열 연결 1. 가장 일반적으로 사용되는 =
항상 이 방법이 가장 효율적이지 않다고 합니다. 이유는 무엇입니까? 이 방법의 실제 프로세스를 살펴볼 수 있습니다.
var str = "hello";
str = "world"
(1) "hello"를 저장할 문자열을 만듭니다.
(2) "world"를 저장할 문자열을 만듭니다.
(3) 연결 결과를 저장할 문자열을 만듭니다.
(4) str의 현재 내용을 결과에 복사합니다.
(5) "world"를 결과에 복사합니다.
(6) 결과를 가리키도록 str을 업데이트합니다.
문자열 연결이 완료될 때마다 2~6단계가 실행되므로 이 작업에는 리소스가 많이 소모됩니다. 이 프로세스를 수백, 수천 번 반복하면 성능 문제가 발생할 수 있습니다. 이 사용법은 앞으로는 폐기될 예정입니다, 하하하. ^_^
2. Join() 메소드
//버튼 호출
function JoinFn() {
var arr = new Array;
arr[0] = "Zhang San"
arr[1] = "Li Four";
alert(arr.join(""));
}
수행 단계는 다음과 같습니다.
(1) 결과를 저장합니다.
(2) 각 문자열을 결과의 적절한 위치에 복사합니다.
이 방법은 첫 번째 방법보다 빠릅니다.
3. 사용자 정의 클래스 캡슐화
C#과 같이 JavaScript에는 StringBuilder 클래스가 없지만 StringBuilder 클래스를 사용자 정의하는 방법은 이전 기사에서 언급한 바와 같습니다. "하이브리드 생성자/프로토타입 접근 방식".
//StringBuilder 클래스를 사용자 정의하여 문자 연결 String
function StringBuilder() {
this._strings = new Array();
}
StringBuilder.prototype.append = function(str) {
this._strings.push(str) ;
};
StringBuilder.prototype.toString = function() {
return this._strings.join("")
}//버튼이
함수를 호출합니다. () {
var sb = new StringBuilder();
sb.append("장산")
sb.append("lee思"); var strResult = sb.toString( ; Join()이 가장 빠른 것 같지만 세 번째가 가장 느립니다. 내 사용자 정의 StringBuilder 클래스에 문제가 있는 걸까요?