Цитата:
var array = [1]; var arrayLike = {0:1, length:1}; var fakeArrayLike = {length:1, height:2}; var window = window; var fn = function() {}; var fake1 = {foo: NaN, length: 1}; var fake2 = {'12.24': 1, length: 1}; var fake3 = ''; var fake4 = '1'; console.log(isArrayLike(document.getElementsByTagName('body')) === true, 1); console.log(isArrayLike(document.querySelectorAll('body')) === true, 2); console.log(isArrayLike(array) === true, 3); console.log(isArrayLike(arrayLike) === true, 4); console.log(isArrayLike(fakeArrayLike) === false, 5); console.log(isArrayLike(window) === false, 6); console.log(isArrayLike(fn) === false, 7); console.log(isArrayLike(fake1) === false, 8); console.log(isArrayLike(fake2) === false, 9); console.log(isArrayLike(fake3) === false, 10); console.log(isArrayLike(fake4) === false, 11); function isArrayLike(item) { if( typeof item === 'string' ) return false; if( item == null ) return false; if( item === window ) return false; if( !('length' in item) ) return false; if( typeof item === 'function' ) return false; if( item.length === 0 ) return true; return ( item.length - 1 ) in item } --- Erolast, не всегда есть возможность патчить) |
nerv_, а я вот думал на счет стринга но почему то оставил его, посмотрев на ангуляр, хотя нет в нем смысла
nerv_, ух ты, даже likeArray(document.createTextNode('выыв')) выдает false поставлю себе в юишку эту функцию ка я) |
Цитата:
Немного сократил. На последнем тесте врет. С этими не знаю как правильно. |
вообще likeArray предполагается что должна использоваться внутри toArray который по сути строку должен оборачивать в ['строка']
function toArray(item){ if( likeArray(item) ) return [].slice.call(item); return [item] } так что строка не должна быть liteArray по уму чтобы можно было делать так eventNames = toArray(eventsNames) и если был массив строк то он и останется а если была строка то обернется в массив в котором будет в первой ячейке |
Цитата:
*** По поводу likeArray, то у меня юзается так: https://github.com/kobezzza/Collecti.../types.js#L134 Надо пожалуй добавить проверку для window. |
Цитата:
Ты в курсе, что все подобные проверки идут лесом ибо Цитата:
А еще зачем это, если есть старая добрая утиная типизация?) Т.е. эту функцию можно сократить. Впрочем, это поверхностное суждение, я не знаю как у тебя там все устроено) |
Цитата:
Цитата:
Я планировал вернуться к разработке новой версии Collection вскорем, проведу ревью кода, но думаю, что здесь так надо было. |
Цитата:
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 21:56. |