개인 적 으로 중요 하 다 고 생각 하 는 자 바스 크 립 트 프로 그래 밍 기법 9 가 지 를 공유 합 니 다.
js 에서 NaN, undefined, Null, 0, "" bool 로 전환 할 때 false 이기 때문에 이렇게 쓸 수 있 습 니 다.
if(!obj) {}
대상 이 false 일 때 하 는 일 을 표시 합 니 다. obj 가 이상 이면 false 이기 때 문 입 니 다!false 는 true 입 니 다. 그러면 if (obj = null | obj = = NaN...) 가 필요 없습니다.
2. 교묘 한 연산 자:
타임 스탬프 를 받 는 전형 적 인 기술 이 있다.
var dataspan = new Date()*1;
js 는 약 한 유형의 언어 로 Date () 는 시간 을 나타 내 는 문자열 을 되 돌려 줍 니 다. 이 문자열 로 산술 연산 을 하면 결과 의 시간 스탬프 로 변 환 됩 니 다.
3. 정규 표현 식 사용 하기:
/.a/ig.exec('xsas')
// reg , exec , , :test(),match() 。
4. 배열 의 최대 값 과 최소 값 을 가 져 옵 니 다.
var values = [1,2,3,40,23];
var max = Math.Max.apply(Math,values);
Max. apply 를 호출 하여 대상 을 Math 로 설정 한 다음 Values 를 전달 하면 최대 치 를 확인 할 수 있 습 니 다.
5. 메모리 최적화:
function p(){this.p='moersing'}; var p1 = new p();
p1.xx
p1.xx
.......
p1=null; // , p1 。
6. 가장 인기 있 는 생 성 대상 방식 (원형 모드):
function c(){
this.name ='moersing';
this.age=18;
this.books=['javascript develop','C# develop'];
}
c.prototype={
displayBookName:function (){
foreach(var t in this.books)
{
document.write(this.books[t]);
}
}
}
원형 구조 모델 의 가장 큰 단점 은 인용 유형의 공유 에 있 기 때문에 인용 유형 을 구조 함수 에 정의 하고 일반적인 방법 을 원형 에 정의 하 며 this 인용 을 사용 합 니 다.
7. 블록 급 역할 영역 과 개인 변수
javascript 에 서 는 블록 급 역할 영역 과 개인 변수 라 는 말 이 없 지만 일부 특성 을 이용 하면 이러한 효 과 를 모방 할 수 있 습 니 다.
7.1 블록 급 역할 영역:
(function(){
//
}
)();
익명 함수 에 괄호 를 하나 더 하면 나 는 그것 을 '함수 표준화' 라 고 부른다. 즉, 표준 함수 처럼 호출 할 수 있다. 예 를 들 어:
var name =function(){};
(name)();// ;
이렇게 하 는 장점 은 () 외부 에서 함수 의 변 수 를 방문 할 수 없고 블록 급 역할 영역 이 되 는 것 입 니 다. 이런 방식 은 보통 플러그 인 을 작성 할 때 전역 (global) 에 추가 변 수 를 추가 하지 않 습 니 다. 또한 함수 가 실 행 된 후에 내부 에서 정 의 된 변 수 는 삭제 되 기 때문에 패 킷 특성 에 문제 가 없 을 것 입 니 다.
7.2 개인 변수:
function private()
{
var name = 'moersing';
this.getName = function(){
return this.name;
}
}
개인 변 수 는 실제 적 으로 함수 의 역할 도 메 인 을 제한 (외부 에 접근 할 수 없 음) 으로 한 가지 방법 을 정의 하 는 것 입 니 다. 이 방법 은 해당 하 는 변 수 를 되 돌려 주 는 것 입 니 다. 이것 뿐 입 니 다.
8. DOM 의 NodeList:
nodeList 는 동적 요소 입 니 다. 이 는 문서 에 모든 요 소 를 추가 하면 nodeList 는 실시 간 으로 업 데 이 트 됩 니 다. 예 를 들 어:
var alldiv = document.getElementsByTagName('div');
for(var i=0;i {
var div = document.createElement('div');
div.innerHTML= i.toString();
document.body.appendChild(div);
}
이 코드 는 무한 순환 을 일 으 킬 수 있 습 니 다. 순환 에서 div 를 만 든 다음 appendChild 방법 으로 body 에 추가 하면 모든 alldiv 가 즉시 업 데 이 트 됩 니 다. 그래서 i.
var alldiv = document.getElementsByTagName('div');
var len,i;
for(i=0,len=alldiv.length;i {
var div = document.createElement('div');
div.innerHTML= i.toString();
document.body.appendChild(div);
}
이 제안: NodeList 작업 을 자주 하지 않 는 것 이 좋 습 니 다. 매번 DOM 트 리 에 대한 조 회 를 실행 하기 때 문 입 니 다.
위 에서 소개 한 방법 을 제외 하고 HTML 5 에 새로 가입 한 API (selector API Level 1) 도 이 문 제 를 해결 할 수 있 습 니 다. C \ # 의 linq 와 유사 하여 제때에 조회 할 수 있 습 니 다. linq 가 무엇 인지 에 대해 서 는 즉시 조회 할 수 있 습 니 다. 나중에 블 로 그 를 업데이트 하 겠 습 니 다. 관심 을 가 져 주 십시오.
var allDiv= document.querySelectorAll('div');
for(var i=0;i {
var div = document.createElement('div');
div.innerHTML= i.toString();
document.body.appendChild(div);
}
query Selector All 은 jquery 의 $() 와 같은 인자 가 필요 합 니 다. NodeList 는 적시에 비 동적 인 DOM 집합 입 니 다.
또 하나의 query Selector 가 있 습 니 다. 일치 하 는 첫 번 째 요 소 를 되 돌려 줍 니 다. HTML 5 API 에 대한 자세 한 내용 은 다음 과 같 습 니 다.
http://www.w3.org/standards/techs/dom#w3c_all
혹은
https://developer.mozilla.org/zh-CN/docs/Web/API
또한, 본인 도 HTML 5 API 를 전문 으로 하 는 블 로 그 를 준비 하고 있 습 니 다. 주목 해 주 십시오.
9. DOM 성능:
이런 바보 짓 하지 마.
for(var i=0;i<10;i++)
{
document.querySelector('ul').innerHTML=""+i+" ";
}
대상 의 innerHTML 에 값 을 부여 하면 내 장 된 C + + 해상도 기 를 호출 하여 이 문자열 을 해석 합 니 다. 속도 가 빠 르 지만 이렇게 조작 하지 않 는 것 이 좋 습 니 다. 일정한 성능 이 유 실 됩 니 다.
가장 좋 은 것 은 이렇게 하 는 것 이다.
var ih=null;
for(var i=0;i<10;i++)
{
ih+="
"+i+" ";
}
document.querySelector('ul').innerHTML=ih;
또 다른 성능 최적화 화 제 는 시간 이 있 으 면 다시 업데이트 한다.
이상 에서 말 한 것 이 바로 본문의 전체 내용 이 니 여러분 들 이 좋아 하 시 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.