- 1
- 2
- 3
function isArray(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+166
function isArray(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}
ЖИСТОКЕ
wmmorgun 09.01.2011 15:01 # −1
Lure Of Chaos 09.01.2011 16:03 # 0
kir 12.01.2011 12:08 # −2
Vasiliy 12.01.2011 12:53 # −1
kir 12.01.2011 13:11 # −1
Vasiliy 12.01.2011 15:12 # −3
type: function( obj ) {
return obj == null ?
String( obj ) :
class2type[ toString.call(obj) ] || "object";
}
isArray: Array.isArray || function( obj ) {
return jQuery.type(obj) === "array";
},
Остальных под рукой нет.
Я как вижу узнается тип переменной и он сравнивается с тем что есть в массиве типов известных JQ если не находит там то возвращается object.
Где тут [object Array]
Vasiliy 12.01.2011 15:15 # 0
TarasB 12.01.2011 15:39 # +1
kir 12.01.2011 16:07 # +1
ф-ия type
type: function (i) {
return i == null ? String(i) : L[x.call(i)] || "object"
}
Здесь берется значение из массива L объекта b
x объявляется почти в самом начале
x = Object.prototype.toString
А потом чуть ниже происходит вот что
b.each("Boolean Number String Function Array Date RegExp Object".split(" "), function (i, r) {
L["[object " + r + "]"] = r.toLowerCase()
});
Т.е. по сути сравнивается Object.prototype.toString.call(0) == "[object Array]"
В prototypejs
function isArray(object) {
return _toString.call(object) === ARRAY_CLASS;
}
здесь ARRAY_CLASS == '[object Array]'
_toString == Object.prototype.toString
аналогично в extjs
isArray : function(v){
return toString.apply(v) === '[object Array]';
}
bugmenot 12.01.2011 16:10 # +1
bugmenot 12.01.2011 16:08 # +1
increazon 28.03.2011 13:19 # −1
bugmenot 28.03.2011 13:24 # +2