All streams
Search
Write a publication
Pull to refresh
0
sphere @sphereread⁠-⁠only

User

Send message
Зато уж точно создастся 100 лишних ссылок.

Вообще, автор статьи не до конца разобрался в теме.
Основная ошибка и "затык" начинающих — попытка обращаться с прототипами объектов, а не их конструкторов. Ибо прототипов у самих объектов нет.

// конструктор
var MyObj = function(){ this.x = 10; };
MyObj.prototype = { x:0, y:0, move:function(x,y){this.x=x; this.y=y;} };
// создание объекта
var myObj = new MyObj();
for(var i in myObj){ if myObj.hasOwnProperty(i) alert(i); } // -> «x»
alert(myObj.x); // -> 10
alert(myObj.y); // -> 0
alert(myObj.move); // -> «function», т.е. метод присутствует.

Как это работает:
«MyObj» — обычная функция. Ещё раз: обычная функция.
При вызове (любой) функции с оператором new происходят три вещи:
1. Создаётся новый, «чистый» объект в памяти.
2. Ссылка на него передаётся вызываемой функции как «this». Всё, что функция назначит этому «this» внутри себя, соответственно будет назначено новому объекту.
3. По окончании работы ссылка на объект возвращается переменной по оператору присваивания. В нашем примере – «myObj». Также мы можем вернуть ссылку явно – оператором «return».

Если проверить все «собственные» свойства свежесозданного «myObj» при помощи метода hasOwnProperty() выяснится, что он имеет лишь свойство «x», назначенное ему конструктором.

for(var i in myObj){ if myObj.hasOwnProperty(i) alert(i); } // -> «x»

Тогда откуда берётся «y»? Не найдя этого свойства в самом объекте, машинка обращается к создавшей его функции. Ссылка на неё хранится в каждом объекте, в свойстве «constructor» (мы даже можем проверять принадлежность объекта: myObj.constructor == MyObj // -> true). Затем машинка обращается с свойству «prototype» конструктора и – о чудо – находит там «y». Полный путь: «myObj.constructor.prototype.y». Надеюсь, не нужно объяснять, почему это свойство получается общим для всех объектов, созданных через MyObj().
Вообще, все «общие» свойства, такие как методы или «статические» переменные нужно оставлять в прототипах. Делать на них лишние ссылки из объектов не нужно – машинка сама найдёт свойство по цепочке наследования. Другое дело, что можно переопределить свойство (как это сделано с «x» в примере) – тогда его значение будет уникальным, принадлежащим только этому объекту, а машинка доберётся до него раньше, не углубляясь в прототипы.

Подробнее о самом «прототипе». Это обычный объект, с обычными свойствами, создается обычным путём (запись в примере «someObj = {}» является лишь сокращением от «someObj = new Object()», как и «someObj = []» является «someObj = new Array()»). Т.е. можно создавать объект-прототип любого класса. Так реализуется наследование.

// новый конструктор
var myObj2 = function(){};
MyObj2.prototype = new MyObj(); // ога, вот отсюда возьмём всё что не найдем в самих объектах
// его объект
var myObj2 = new MyObj2();
for(var i in myObj2){ if myObj2.hasOwnProperty(i) alert(i); } // а ничего нет – кунструктор-то ничего не назначил, объект пустой
7-8 линков — вы это про линк-фермы что-ли?
Они, вместе со сквоттерами — отдельный вопрос, от числа доменов не зависящий.
Проблемы, да, решать нужно. Согласен, что нацдомены решают, разве что, проблему получения прибыли регистраторами.
Не сказал бы, что синонимы что-либо засоряют. Они и до этого были, никому не мешали.
Скорее всего, более-менее крупные владельцы нацадреса будут использовать лишь как синонимы (а регистраторы, понятное дело, как "лишний" заработок — ИМХО, для того и придумано).
* http://www.dtf.ru/articles/print.php?id=39888
Ссылка мне не дается, простите.
Об "увеличении скорости" и необходимости учиться.
То, что вам никто не говорил о многозадачности в Windows
Ключевое словосочетание — "все разработчики". Конечно, это из области фантастики и моральная сторона темна, но клин клином вышибают + помечтать захотелось :)
А "медленно, без резких проблем" должно начинаться хотя бы с информирования о том, что IE, вообще-то, не часть ОС и его можно заменять. Об етом и жужжу.
А это мысль. Если бы все разработчики пользовались методами MS и вместо добросовестных раскоряк и врапперов писали бы, что "Данная функция не поддерживается этим браузером, взять правильный можно здесь...", может быть что-то и поменялось бы :)
Коробка, всё правильно. Но я понимаю, когда "коробочный" браузер поставляется в системе, например, как минимальное средство получить нормальный браузер. Но когда это убожество всеми силами даёт понять, что вот оно и есть нормально — я понимаю это с трудом.
Самый первый мой пост был как раз об этом.
Это как раз основной вопрос. Подозреваю, что при такой интеграции простые пользователи вообще считают IE и Windows одним целым — даже предположения не возникает, что можно иметь другой браузер. MS в своём амплуа, короче.
Несоответствие стандартам опустим, грешки за всеми.
Остаются лишь тупость (слабый инструментарий для разработчика, медленное развитие), баги (иногда очень трудноуловимые), монополистическая политика (чего, например, стоит закрытие Elements в DOM). Всё вместе выливается в лишнюю тупую работу, за которую (!) ещё и платить приходится, нервными клетками в том числе. Если IE Вас ни разу не удручал, Вы или адепт дзен, или просто мало с ним общались.
Ага. А с картинками что делать? Эмбедом?
Когда кто-нибудь в отношении IE того же добьётся? Хотя бы пункта "Microsoft будет также информировать пользователей компьютеров, как они могут изменить установленный по умолчанию браузер".
Он же реально мешает разрабатывать сайты.
Ещё раз скину: http://pictcha.net/
Строка ввода для тестов. Если её оставлять, наверное, буквы прилеплю к фоткам или ещё как.
Или что-то другое имеется в виду?
Капча по фото: http://pictcha.net/
Картинки деформируются геометрически и по цвету. Настройки количества вывода, кеш, все дела.
Сто лет назад делал, да руки не дошли проверить. Но теоретическая сложность лома интересует.
Полезна команда "Bookmark all tabs".
Но мало кто знает, что для восстановления сразу всех закладок из папки, можно щелкнуть по ней средней кнопкой мыши.
12 ...
12

Information

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