All streams
Search
Write a publication
Pull to refresh
51
0
Kolyaj @Kolyaj

User

Send message
То же самое же и в статье написано.

Кстати в первом случае в IE ключа 2 существовать не будет :)
new вызывает конструктор обьекта и клонирует… Не сам обьект, а его ПРОТОТИП!
Ничего он не клонирует. Новосозданный объект связывается с прототипом. Это не то же самое, что клонирование.
>> и в чем тогда отличие функции от метода?

Если говорить формально
A function stored in a property of an object is called a method.

javascript.ru/ecma/part4#a-4.3.3
Я предпочитаю var that = this. Всё-таки используется «тот» контекст, а не «этот». Да и self — предопределённая переменная в JS, которая впрочем, как правило, не используется.
Без замыкания можно обойтись только в том случае, если функция, принимающая callback, принимает и контекст для него. Иначе что self, что .bind, всё равно замыкание создаётся.
В итоге.

each работает по разному в разных браузерах.

        var values = '';
        _.each([1,,2], function(value) {
            values += value;
        });
        alert(values);  // 1undefined2 в IE, 12 в остальных браузерах


map и filter используют each, поэтому тоже работают по разному, но даже если исправить each, map будет работать неправильно.

indexOf, lastIndexOf тоже работают неправильно.
alert(_.indexOf([1,,undefined], undefined));
Выведет 1 в IE, 2 в остальных браузерах. Хотя в IE в данном конкретном случае должен вывести -1, но это из другой оперы.
Как и в Prototype, если есть берётся forEach, если нет, используется неправильный аналог.

var a = ['a', 'b'];
a[5] = 'c';
var str = '';
_.each(a, function(item) {
    str += item;
});
alert(str);


В разных браузерах будет разный результат.
>> Использование for (var i in []) вызовет проблемы в ie даже не с раширенными прототипами

Вообще говоря цикл for-in для массивов может вызвать проблемы в любом браузере и без расширения прототипов. Простой пример

var a = 'ab'.match(/((a)(b))/); // метод match возвращает массив
var props = '';
for (var i in a) {
props += i + ' ';
}
alert(props);
// IE: input index lastIndex 0 1 2 3
// Остальные браузеры: 0 1 2 3 index input
Вы считаете дешёвым понтом слова о том, что на Javascript без затруднений поддерживаются крупные проекты, если выбрать нормальную архитектуру приложения? Ну ладно, считайте.
>> Всем, кто знаком с Javascript, знают как трудно поддерживать быстро растущий код с множеством магии вроде наследования, передачи контекста объекта в callback методы и многое, многое другое.

Только на одном из проектов поддерживаю ~2 MB JS-кода, поддерживать не трудно. Может язык стоит изучить, перед тем, как такое говорить?
Я использую Javascript, у меня нет головной боли.
В статье bitbybit.ru/tutorial/Javascript/lesson/147 местами написан бред. Я бы там оставил комментарий по OpenID, например, но обычную-то регистрацию лень проходить, а инвайт просить и подавно.

Вопрос: как вы считаете, когда с таким подходом к регистрации ваши пользователи узнают, что неправильно в статье?
Мы для своих целей переписали вот этот плагин для Fx. При желании можно его оформить как отдельное xul-приложение.
>> PS. Приведите пример необъекта (если только number, но это все условности ;-) ).

Нет, не условности. 12, «abc», true, false — это всё примитивные значения, а не объекты. При попытке вызвать у них метод, они приводятся к объекту.

var a = 'abc';
a.foo = 'bar'; // Здесь a приводится к объекту
alert(a.foo);  // undefined, если бы строки были объектами, 
               // то было бы bar


Все параметры передаются в JS по значению, просто некоторые значения являются ссылками на объекты.
dmitrysoshnikov.com/ecmascript/ru-chapter-8-evaluation-strategy/#realizatsiya-v-ecmascript
И не всё в JS объекты.
getComputedStyle не единственный способ узнать посещена ли ссылка. И даже менее неудобный. Достаточно что-то вроде

CSS:
a:visited { display: none; }

JS:
alert(a.offsetWidth? 'Не посещена': 'Посещена');

Поэтому и вырубают свойства, влияющие на layout.
Вы, возможно, имеете в виду, что IE6 не понимает классы с именами, начинающимися на дефис?
www.whatwg.org/specs/web-workers/current-work/

The DOM APIs (Node objects, Document objects, etc) are not available to workers in this version of this specification.
Полностью с вами согласен. Я лишь говорю, что WebWorkers предназначены для узкого круга задач.
У WebWorker много ограничений: он должен жить в отдельном файле, файл должен находиться на том же домене, worker не имеет доступа ни к DOM, ни к остальным скриптам, общение с внешним миром только с помощью XMLHttpRequest или postMessage.

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity