序文
私が最近接触したJavaScript Syntax Sugarを要約して、それをあなたと共有しましょう。
キャンディの各部分には詳細な指示と例があるので、あまり言いません。
正確なタイプチェック
コードコピーは次のとおりです。
/*
* @関数:
*タイプチェックの例
*この方法では、変数が予想されるデータ型であるかどうかを確認できます
* @params:
*チェックする必要があるOBJ変数が必要です
*構成データ型ホワイトリスト、オプション、デフォルトのすべてのタイプに
* @戻る:
* trueは、小切手が渡され、falseが失敗することを意味します
* @examples:
* TypeCheck( "str"); // trueを返します
* TypeCheck({}、{"[Object Array]":1}); // falseを返します
*/
関数TypeCheck(obj、config){
var hasop = object.prototype.hasownproperty、
toStr = object.prototype.toString、
_config = config || {
「[オブジェクトオブジェクト]」:1、
「[オブジェクトアレイ]」:1
「[Object Regex]」:1、
「[Object String]」:1、
「[オブジェクト番号]」:1、
"[object boolean]":1、
「[オブジェクト関数]」:1、
「[オブジェクト未定義]」:1、
「[オブジェクトヌル]」:1
};
hasop.call(_config、tostr.call(obj));
}
プロトタイプを追加するエレガントな方法
コードコピーは次のとおりです。
/*
* @説明:
*プロトタイプを追加するエレガントな方法
*このコードスニペットをパブリックスコープで実行するだけです
*/
if(typeof function.prototype.method!== "function"){
function.prototype.method = function(name、fn){
this.prototype [name] = fn;
これを返します。
};
}
/*
*使用の例
*/
//「テストクラス」を定義します
関数testfn(){
}
//テストクラスメンバーメソッドを追加します
testfn.method( "add"、function(a、b){
a + bを返します。
})。method( "sub"、function(a、b){
a -bを返します。
});
//インスタンス化
var testobj = new testfn();
//メンバーメソッドを呼び出します
testobj.add(1,5); //戻る6
testobj.sub(7,2); //戻る5
名前空間をすばやく作成します
コードコピーは次のとおりです。
/*
* @関数:
*名前空間を作成します
* @params:
*例:nsroot.service.impl
*この式はルートノードから開始する必要があります
* @戻る:
*式の最後のノードであるオブジェクトを返します
* @others:
* NSROOTという名前が気に入らない場合は、交換を検索するだけです
*/
var nsroot = nsroot || {};
nsroot.namespace = function(ex){
var _ex = ex || ""、
nsarray = _ex.split( "。")、
parentNode = nsroot、
_s = ""、
i = 0;
//名前空間がルートノードから始まるかどうかを判断します
if(nsarray [0]!== "nsroot"){
Thro( "名前空間はルートノードから起動する必要があります!");
}
//ルートノードを削除します
nsarray = nsarray.slice(1);
for(i = 0; i <nsarray.length; i ++){
_s = nsarray [i];
if(parentnode [_s] === undefined){
parentNode [_s] = {};
}
parentNode = parentNode [_s];
}
ParentNodeを返します。
};
/*
*使用の例
*/
//新しい名前空間を作成します
var impl = nsroot.namespace( "nsroot.service.impl");
アラート(empl === nsroot.service.impl); // trueを返します
//元のデータを上書きせずに既存の名前空間を作成します
nsroot.namespace( "nsroot.service.impl");
アラート(empl === nsroot.service.impl); // trueを返します