isArray : function(v){
return toString .apply( v) === '[オブジェクト配列]';
},
isDate : function(v){
return toString.apply(v) === '[オブジェクト日付]';
},
isObject : function(v){
return !!v && Object.prototype.toString.call(v) === '[オブジェクト オブジェクト]'; >isPrimitive : function(v){
return Ext.isString(v) || Ext.isBoolean(v);
},
isFunction : function(v);
return toString.apply(v) === '[オブジェクト関数]';
},
isNumber : function(v){
return typeof v === 'number' && isFinite( v);
},
isString : function(v){
return typeof v === 'string';
},
isBoolean : function(v){
return typeof v = == 'boolean';
}
上記は、Extjs3.X ext-base.js で型を決定するコードです。以下のような類似したものが多数あります:
is type: function(v){
return toString.apply(v) ==="Type";
}
または
is type: function(v){
returntypeof v = =="Type";
}
ただし、tyoeof の内部では、toString メソッドを使用して型を決定できます。つまり、次のようになります。
var is type=function(v){
return toString.call(v) ==="type";
}
上記はモデルであり、この判断に対応するメソッドは簡略化できます。これにより、コードが大幅に削減され、JavaScript の読み込み効率が向上します。
var Easy={}, dataTypes = ["Number", "Boolean", "String", "Array",
"オブジェクト", "関数", "日付", "RegExp"];
var toStr = Object.prototype.toString;
var is = function (v, t) {
return toStr( o) == "[オブジェクト " t "]";
};
for ( var i = 0, len = dataTypes.length, t; i (関数 ( t) {
Easy["is" t] = function (o) {
return is(o, t);
}
})(dataTypes[i]);//クロージャを使用する
}
上記のコードでは、Easy オブジェクトは型を決定するために 8 つのメソッドを作成しました。もちろん、一部のメソッドが不合理な場合は、それらをオーバーライドすることもできます。例:
Easy.isNumber=function (v){
return toString.call(v) ==="[オブジェクト番号]"&& isFinite(v);
}
そのため、場合によってはこの書き方を検討することもできます。似たような機能を持ったメソッドをいくつか書いたので、今度はそれについて紹介します。