Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   vanilla.js..... (https://javascript.ru/forum/offtopic/43718-vanilla-js.html)

l-liava-l 17.12.2013 19:43

vanilla.js.....
 
действительно очень легкий и мощный фреймворк!:D
http://s2.ipicture.ru/uploads/20131217/WLxmC3WP.png
http://s2.ipicture.ru/uploads/20131217/doHYgPjn.png

господа, wtf?
Вот суки, меня обманули... негодяи))

Maxmaxmaximus5 17.12.2013 19:54

Даша следопыт

nerv_ 19.12.2013 22:31

Раз уж тема пустует, воспользуюсь случаем и задам вопрос: плохо ли так делать и если да, то почему?
/**
 * NULL IS NEW GLOBAL OBJECT
 */
this.Null = {
    /**
     * Returns "true" if a value is null
     * @param {*} v A value
     * @returns {Boolean}
     */
    isNull: function(v) {
        return v === null;
    }
};



/**
 * UNDEFINED IS NEW GLOBAL OBJECT
 */
this.Undefined = {
    /**
     * Returns "true" if a value is undefined
     * @param {*} v A value
     * @returns {Boolean}
     */
    isUndefined: function(v) {
        return v === undefined;
    },
    /**
     * Returns "true" if a value is defined
     * @param {*} v A value
     * @returns {Boolean}
     */
    isDefined: function(v) {
        return v !== undefined;
    }
};

kobezzza 20.12.2013 00:10

Я просто в глобал спейс добавляю функции вида: isUndef и isNull

l-liava-l 20.12.2013 00:49

Цитата:

Раз уж тема пустует, воспользуюсь случаем и задам вопрос: плохо ли так делать и если да, то почему?
Я бы не стал так писать не очень очевидно(мне) + много когда

А это почти копипаст:
isUndefined: function(v) {
	        return v === undefined;
	    },
	    isDefined: function(v) {
	        return v !== undefined;

Я обычно пилю так
function is(type, variable) {
    return variable === type
}
is(undefined, 10);


Ну или как kobezzza тоже

nerv_ 20.12.2013 01:09

Цитата:

Сообщение от l-liava-l
Я обычно пилю так

массивы как проверять будешь?

Цитата:

Сообщение от kobezzza
Я просто в глобал спейс добавляю функции вида: isUndef и isNull

разумно. С другой стороны есть логика вида
Constructor.IsConstructor(variable);

или
Type.IsType(variable);

и не хочется ее нарушать. Но null & undefined примитивы и не имеют конструкторов. Вместе с тем Number имеет...

Пока в раздумьях :)

Вот так получается https://github.com/nervgh/yum.js/blob/master/src/yum.js

Это "isDefined", конечно, надо убирать, а то взрыв мозга :D

... или сделать как сказал кобеза и добавить в глобал три функции

Цитата:

Сообщение от l-liava-l
А это почти копипаст

и что из этого?

cyber 20.12.2013 01:58

nerv_,
function is(str, obj) {
        
 var type = {}.toString.call(obj).toLowerCase();
     type = type.slice(7);
        

 return type.indexOf(str.toLowerCase()) != -1 && !(obj !== obj);
      
 }
      
      console.log(is("array", []));
      console.log(is("number", 3));
      console.log(is("number", "3"));
      console.log(is("object", undefined));


При желание можно сократить)

Date.isDate = function(v) {
    return is("Date", v);
};

nerv_ 20.12.2013 02:43

cyber, посмотри, сколько у тебя операций, и сколько у меня https://github.com/nervgh/yum.js/blo...rc/yum.js#L210 Как думаешь, есть разница в скорости? :) Кроме того, так я проверяю только объекты https://github.com/nervgh/yum.js/blo...rc/yum.js#L165 , кот. не определяются через typeof

monolithed 20.12.2013 02:50

В большинстве случаев проверка типа объекта решается пересмотром архитектуры.
Может когда-нибудь TC-39 решат добавить перегрузку функций ;)

cyber 20.12.2013 03:00

Цитата:

Сообщение от nerv_
Как думаешь, есть разница в скорости?

не буду отвечать на реторический вопрос)


Часовой пояс GMT +3, время: 09:09.