머리말
최근에 접한 JavaScript 구문 설탕을 요약하고 모든 사람과 공유합니다.
각 사탕에는 자세한 설명과 예시가 있으므로 자세히 설명하지는 않겠습니다.
정확한 유형 확인
/*
* @함수:
* 유형 확인 예시
* 이 방법을 통해 변수가 예상한 데이터 타입인지 확인할 수 있습니다
* @params:
* 확인할 obj 변수, 필수
* 구성 데이터 유형 화이트리스트, 선택 사항, 기본값은 모든 유형
* @return:
* true는 검사가 통과되었음을 의미하고 false는 실패를 의미합니다
* @예:
* typeCheck("str"); //참을 반환합니다
* typeCheck({},{"[객체 배열]": 1}) //false 반환
*/
함수 typeCheck(obj,config){
var hasOp = Object.prototype.hasOwnProperty,
toStr = Object.prototype.toString,
_config = 구성 {
"[개체 개체]": 1,
"[객체 배열]": 1,
"[객체 정규식]": 1,
"[객체 문자열]": 1,
"[개체 번호]": 1,
"[객체 부울]": 1,
"[객체 함수]": 1,
"[객체 정의되지 않음]": 1,
"[개체 Null]": 1
};
반환 hasOp.call(_config,toStr.call(obj));
}
프로토타입을 추가하는 우아한 방법
/*
* @설명:
* 프로토타입을 추가하는 우아한 방법
* 공개 범위에서 이 코드 조각을 실행하세요
*/
if(typeof Function.prototype.method !== "함수") {
Function.prototype.method = 함수(이름,fn){
This.prototype[이름] = fn;
이것을 돌려주세요;
};
}
/*
* 사용예
*/
//"테스트 클래스" 정의
함수 testFn(){
}
//테스트 클래스의 멤버 메소드 추가
testFn.method("추가",function(a,b){
b를 돌려주세요;
}).method("sub",function(a,b){
a - b 반환;
});
//인스턴스화
var testObj = new testFn();
//멤버 호출 방법
testObj.add(1,5); //6을 반환
testObj.sub(7,2); //5를 반환
네임스페이스를 빠르게 생성
/*
* @함수:
* 네임스페이스 생성
* @params:
* ex 네임스페이스 표현식(예: NSROOT.service.impl
)
* 이 표현은 루트 노드부터 작성해야 합니다
* @return:
* 객체를 반환합니다. 이 객체는
표현식의 마지막 노드입니다.
* @others:
* NSROOT라는 이름이 마음에 들지 않으시면 검색해서 바꾸시면 됩니다
*/
var NSROOT = NSROOT ||
NSROOT.namespace = 함수(예){
var _ex = ex || "",
nsArray = _ex.split("."),
parentNode = NSROOT,
_s = "",
나는 = 0;
//네임스페이스가 루트 노드에서 시작하는지 확인
if(nsArray[0] !== "NSROOT"){
throw("네임스페이스는 루트 노드에서 시작해야 합니다!");
}
//루트 노드 제거
nsArray = nsArray.slice(1);
for(i = 0;i
_s = nsArray[i];
If(부모 노드[_s] === 정의되지 않음){
parentNode[_s] = {};
}
parentNode = parentNode[_s];
}
parentNode를 반환합니다.
};
/*
* 사용예
*/
//새 네임스페이스 생성
var impl = NSROOT.namespace("NSROOT.service.impl");
Alert(impl === NSROOT.service.impl); //참을 반환합니다
//원본 데이터를 덮어쓰지 않고 기존 네임스페이스 생성
NSROOT.namespace("NSROOT.service.impl");
Alert(impl === NSROOT.service.impl); //참을 반환합니다