JavaScript: prototype 속성 사용 설명
5603 단어 JavaScript
prototype 은 IE 4 와 그 이후 버 전에 도 입 된 바늘 이 특정한 대상 에 대한 방법 이 고 특별한 편 의 는 클래스 의 대상 에 게 방법 을 추가 하 는 방법 입 니 다!이 점 은 좀 복잡 하 게 들 릴 수 있 습 니 다. 서 두 르 지 마 세 요. 다음 에 저 는 사례 를 통 해 이 특수 한 방법 에 대해 설명 을 했 습 니 다. 우선, 우 리 는 먼저 유형의 개념 을 알 아야 합 니 다. JavaScript 자 체 는 대상 을 대상 으로 하 는 언어 이 고 관련 된 요 소 는 그 속성 에 따라 특정한 유형 에 의존 합 니 다.우리 가 흔히 볼 수 있 는 클래스 는 배열 변수 (Array), 논리 변수 (Boolean), 날짜 변수 (Date), 구조 변수 (Function), 수치 변수 (Number), 대상 변수 (Object), 문자열 변수 (String) 등 을 포함 하고 관련 된 클래스 의 방법 도 프로그래머 가 자주 사용 하 는 것 이다 (여기 서 클래스 의 주의 와 속성 을 구분 해 야 한다). 예 를 들 어 배열 의 push 방법,날짜 의 get 시리즈 방법, 문자열 의 split 방법 등 이 있 지만 실제 프로 그래 밍 과정 에서 기 존 방법의 부족 함 을 느 꼈 는 지 모 르 겠 습 니 다.prototype 방법 이 생 겨 났 습 니 다!프로 토 타 입의 구체 적 인 사용 방법 을 실례 를 통 해 간단하게 설명 하 겠 습 니 다.
1. 가장 간단 한 예, prototype 에 대해 알 아 보기:
(1) Number. add (num): 역할, 숫자 더하기 실현 방법: Number. prototype. add = function (num) {return (this + num);} 시험: alert ((3). add (15) - > 18 (2) Boolean. rev (): 역할, 불 변 수 는 반 실현 방법: Boolean. prototype. rev = function () {return (! this);} 시험: alert (true). rev () - > false 를 표시 하 는 것 이 간단 하지 않 습 니까?이 절 은 단지 독자 에 게 또 하나의 방법 을 알려 주 는 것 일 뿐, 이런 방법 은 이렇게 운용 한 것 이다.
2. 기 존 방법의 실현 과 강화, prototype 을 처음 알 게 되 었 습 니 다.
(1) Array. push (new element) 역할: 배열 끝 에 새로운 요 소 를 추가 하 는 방법:
Array.prototype.push = function(new_element) {
this[this.length]=new_element;
return this.length;
}
우리 가 그 를 한 번 에 여러 요 소 를 증가 시 킬 수 있 도록 한층 더 강화 합 시다!실현 방법:
Array.prototype.pushPro = function() {
var currentLength = this.length;
for (var i = 0; i < arguments.length; i++) {
this[currentLength + i] = arguments[i];
}
return this.length;
}
어렵 지 않 겠 죠?이런 식 으로 미 루 면 증강 Array. pop 을 통 해 임의의 위 치 를 삭제 하 는 방법 을 고려 해 볼 수 있 습 니 다. 임의의 여러 요소 (구체 적 인 코드 는 더 이상 자세히 말 하지 않 겠 습 니 다)
(2) String. length 역할: 이것 은 실제 적 으로 String 류 의 속성 입 니 다. 그러나 JavaScript 는 전 각, 반 각 을 하나의 문자 로 간주 하기 때문에 일부 실제 운용 에서 어느 정도 문 제 를 일 으 킬 수 있 습 니 다. 지금 우 리 는 prototype 을 통 해 이 부족 함 을 보완 합 니 다.실현 방법:
String.prototype.cnLength = function() {
var arr=this.match(/[^\x00-\xff]/ig);
return this.length+(arr==null?0:arr.length);
}
시험: alert ("EaseWe 공간 Spaces". cnLength () - > 디 스 플레이 16 은 정규 표현 식 방법 과 전각 문자 의 인 코딩 원 리 를 사 용 했 습 니 다. 다른 두 가지 큰 유형 에 속 하기 때문에 본 고 는 설명 을 하지 않 고 관련 자 료 를 참고 하 시기 바 랍 니 다.
3. 새로운 기능 의 실현, 프로 토 타 입 깊이
실제 프로 그래 밍 에서 사용 하 는 것 은 기 존의 방법의 강화 뿐만 아니 라 더 많은 실행 기능 에 대한 요구 도 있 을 것 입 니 다. 다음은 prototype 으로 실제 문 제 를 해결 하 는 두 가지 예 를 들 겠 습 니 다.
(1) String. left () 문제: vb 를 사용 한 적 이 있 는 사람 은 모두 left 함 수 를 알 고 있 을 것 입 니 다. 문자열 왼쪽 에서 n 개의 문 자 를 가 져 오지 만 전각, 반 각 을 하나의 문자 로 간주 하지 않 아 중 영문 혼 열 된 지면 에서 같은 길이 의 문자열 역할 을 차단 할 수 없습니다. 문자열 왼쪽 에서 n 개의 문 자 를 캡 처 합 니 다.그리고 전각 반 각 문자 의 구분 실현 방법 을 지원 합 니 다.
String.prototype.left = function(num,mode) {
if(!/\d+/.test(num))return(this);
var str = this.substr(0,num);
if(!mode) return str;
var n = str.Tlength() - str.length;
num = num - parseInt(n/2);
return this.substr(0,num);
}
시험: alert ("EaseWe 공간 공간". left (8) - > EaseWe 공간 표시 alert ("EaseWe 공간 Spaces". left (8, true) - > EaseWe 공본 을 표시 하 는 방법 은 위 에서 언급 한 String. Tlength () 방법 을 사 용 했 습 니 다. 사용자 정의 방법 사이 에 도 좋 은 새로운 방법 을 조합 할 수 있 습 니 다!
(2) Date. DayDiff () 역할: 두 날짜 형 변수의 간격 (년, 월, 일, 주) 실현 방법 을 계산 합 니 다.
Date.prototype.DayDiff = function(cDate,mode){
try{
cDate.getYear();
}catch(e){
return(0);
}
var base =60*60*24*1000;
var result = Math.abs(this - cDate);
switch(mode){
case "y":
result/=base*365;
break;
case "m":
result/=base*365/12;
break;
case "w":
result/=base*7;
break;
default:
result/=base;
break;
}
return(Math.floor(result));
}
시험:
alert ((new Date (). DayDiff ((new Date (2002, 0, 1))) - > 329 표시 alert ((new Date ()). DAyDiff ((new Date (2002, 0, 1), 'm') - > 10 을 표시 합 니 다. 물론 더 확장 하여 응답 시간, 분, 심지어 초 를 얻 을 수 있 습 니 다.
(3) Number. fact () 역할: 특정한 숫자의 곱셈 실현 방법:
Number.prototype.fact=function() {
var num = Math.floor(this);
if(num<0)return NaN;
if(num==0 || num==1)
return 1;
else
return (num*(num-1).fact());
}
시험: alert (4). fact () - > 표시 24 이 방법 은 주로 재 귀적 인 방법 이 prototype 방법 에서 도 가능 하 다 는 것 을 설명 합 니 다!
출처: http://shinylife.net/blog/article.asp?id=455
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.