YAHOO.lang = YAHOO.lang || {
isArray: function(o) {
if (o) {
var l = YAHOO.lang
// オブジェクトが属性 length を持っている場合、スプライス メソッドをサポートしています。
// この場合、配列とみなされます。
return l.isNumber(o.length) && l.isFunction(o.splice);
return typeof o === 'boolean';
},
isFunction: function( o) {
return typeof o === '関数';
},
isNull: function(o) {
return o === null; 🎜>
isNumber: function(o) {
return typeof o === 'number' && isFinite(o);
},
isObject: function(o) {
return (o && (typeof o === 'object' ||
YAHOO.lang .isFunction(o))) || false;
isString: function(o) {
戻り値 o === '文字列';
},
は未定義: function(o) {
戻り値 o === '未定義' },
//...
isValue: function(o ) {
// Infinity は失敗します
// return (o || o === false || o = == 0 || o === '');
var l = YAHOO.lang ;
return (l.isObject(o) || l.isString(o) ||
| l. isNumber(o) || l.isBoolean(o)); ... 分割線をコピーして貼り付けます ...
YUI バージョン 2.2.0 より前では、YAHOO.lang.isArray は次のように記述されていたことが報告されていますこれ。
isArray: function(obj) {
// Safari にはバグがあるため、文字列を処理する必要があります
if (obj && obj.constructor &&
obj.constructor.toString( ).indexOf( '配列') > -1) {
return true;
} else {
return YAHOO.lang.isObject(obj) && obj.constructor == 配列;
}、次のコードのような配列型の判断には欠陥があります。
function myArray() {
this.name = 'name';
var o2 = new myArray( ; () {
this.name = 'name';
}
var o = new Obj();
o.constructor = Array;
alert(YAHOO. util.isArray(o )); // Pop up true
// JavaScript ではコンストラクターもプロパティであるため、
// 動的に指定できるため、YUI の以降のバージョンでは true を返します。 , YAHOO.lang.isArray は現在のものに変更されました。次のようになります。
isArray: function(o) {
if (o) {
var l = YAHOO.lang> //オブジェクトに長さの属性がある場合は、splice Method,
// それを配列として考慮します。
return l.isNumber(o.length) && l.isFunction(o.splice);
}
return false; 新しい実装では、オブジェクトの長さが属性は splice メソッドもサポートしているため、配列とみなされます。もちろん、これにはまだ抜け穴があり、長さプロパティとスプライス メソッドを使用してオブジェクトを作成することはできます。しかし、私は現在の実装の方が合理的であると考えています。なぜなら、第一にその可能性は低く、第二にブラウザの奇妙なバグを回避できるからです。
YUI 2.3.0 以降に導入された YAHOO.lang.isValue を見ると、パラメータが意味のある値であるかどうかが実際に判断され、パラメータが null/未定義/NaN でない限り、true が返されます。 (これと一般的な true と false の判断の違いは、0/false/'' (空の文字列) が有効な値とみなされることです)。そのため、YAHOO.lang.isValue はフォームの値が正しいかどうかを判断するのに非常に適しています。フィールドは有効な値です。