はじめに
最近出会ったJavaScript構文シュガーをまとめてみんなに共有します。
各キャンディーには詳細な手順と例が記載されているため、詳細は説明しません。
正確な型チェック
/*
* @関数:
* 型チェックの例
* このメソッドを通じて、変数が期待されるデータ型であるかどうかを確認できます
* @params:
* チェックする obj 変数、必須
* 設定データ型のホワイトリスト、オプション、デフォルトはすべての型です
* @return:
* true はチェックに合格したことを意味し、false はチェックに失敗したことを意味します
* @examples:
* typeCheck("str") // true を返します
* 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(Function.prototype.method のタイプ !== "関数") {
Function.prototype.method = function(name,fn){
This.prototype[名前] = fn;
これを返してください;
};
}
/*
※使用例
*/
//「テストクラス」を定義します
関数 testFn(){
}
//テストクラスのメンバーメソッドを追加
testFn.method("add",function(a,b){
b を返します;
}).method("sub",function(a,b){
a - b を返します;
});
//インスタンス化
var testObj = 新しい testFn();
//メンバーメソッドを呼び出す
testObj.add(1,5) //戻り値 6
testObj.sub(7,2); //戻り値 5
名前空間を素早く作成する
コードをコピー コードは次のとおりです:
/*
* @関数:
* 名前空間を作成
* @params:
* ex 名前空間式、例: NSROOT.service.impl
※この式はルートノード
から記述しなければなりません
* @return:
* オブジェクトを返します。このオブジェクトは式
の最後のノードです
* @others:
* NSROOT という名前が気に入らない場合は、
を検索して置き換えてください
*/
var NSROOT = NSROOT {};
NSROOT.namespace = function(ex){
var _ex = ex || "",
nsArray = _ex.split("."),
親ノード = NSROOT,
_s = "",
i = 0;
// 名前空間がルート ノードから始まるかどうかを判断します
if(nsArray[0] !== "NSROOT"){
throw("名前空間はルート ノードから開始する必要があります!");
}
//ルートノードを削除
nsArray = nsArray.slice(1);
for(i = 0;i
_s = nsArray[i];
If(parentNode[_s] === 未定義){
parentNode[_s] = {};
}
親ノード = 親ノード[_s];
}
親ノードを返します;
};
/*
※使用例
*/
// 新しい名前空間を作成します
var impl = NSROOT.namespace("NSROOT.service.impl");
alert(impl === NSROOT.service.impl); // true を返します
//元のデータを上書きせずに既存の名前空間を作成します
NSROOT.namespace("NSROOT.service.impl");
alert(impl === NSROOT.service.impl); // true を返します