Pull to refresh
73
0
Дмитрий @depp

User

Send message
Вообще-то они ни разу не одинаковые. Одна — объект, другая — строка. Одной можно добавить свойства, другой — нельзя. Это собственно и в статье написано.
Ну вот кстати да, одна из причин, по которой я не писал про замыкания — это как раз то, что про них и так довольно много написано. Если вы не против, я могу дать из своей статьи ссылку на вашу, чтобы не раздувать ее сверх меры.
Там вообще то есть о производительности.
Под заголовком «Что теперь со всем этим делать».

А можно поподробнее про торможение прототипов? Насколько я понял из тестов, которые проводил, создание объектов на прототипах наоборот происходит значительно быстрее в IE. А вот вызов методов из таких объектов — лишь немного медленнее. И опять же только в IE.
И превратим этот пост в пост благодарности? )
Насколько я помню даже Дональд Кнут, известный своей щедростью человек, выписывал чеки только за фактические поправки, а не за обнаружение опечаток.
Да не то чтобы часто, но на JavaScript не один же я пишу :) Кто его знает, что там у людей происходит в процессе разработки.

В общем да, пожалуй стоит об этом написать, как об одной из возможностей, но даже пока не знаю, стоит ли апдейтить данную статью или заводить новую.
Ага, спасибо, исправил.
Вроде отлавливал опечатки, но видимо не все.
Ух, шайтан )
Интересно, зачем это так реализовано.
Сейчас исправлю этот момент в статье, спасибо за подсказку.
Ну, тут как бы дело в том, что в класс-ориентированных языках мы определяем приватное поле (или метод) ключевым словом private, и это — родной способ языка, предназначенный именно для этого.

В JavaScript мы создаем локальную переменную функции, и потом используем замыкание. Причем, если мы вдруг в процессе разработки решили приватное свойство сделать публичным или наоборот, то придется сделать больше телодвижений, чем просто поменять private на public.

Нам придется либо менять везде prop на this.prop (или наоборот), либо, если мы изначально работали с приватным свойством через геттеры и сеттеры — у нас может получиться избыточность, когда в геттере берется свойство, которое теперь и так публично (типа this.get_private() {return this.old_private_now_public})

Собственно в том и вопрос — стоит ли оно того.
Чего-то я все равно недопонял :)
[777][{toString:function(){return '0'}}] по идее то же самое, что [777]['0'].
Причем и [777]['0'] и [777][0] дают один и тот же результат.

Т.е. вы хотите сказать, что у массива ключи — это строки на самом деле? И [777][0] как бы преобразуется в [777]['0'] на лету?
А разве приватные поля не являются тем самым притягиванием за уши класс-объектной модели?
Понятно, что их можно сделать, и понятно, что многие привыкли их использовать в других языках, но стоит ли этим заниматься в JavaScript, где изначально все прозрачно и открыто?
Про типы данных исправил.
А вот с ключами немного непонятный для меня момент:
Если мы создадим массив ar=['test', 'test2'], то получим новый объект.
При этом ar[0]=='test', однако ar.0 — выдает ошибку.
Но delete ar[0] удаляет элемент массива так же, как если бы это было свойство объекта, причем ar.length при этом остается равно 2.
Как это все можно объяснить?
> Подобный код всегда вызывал у меня непонимание: с одной стороны функция-конструктор является
> как-бы инициализатором свойств нового объекта, а с другой — может выступать в роли
> конструктора прототипа другой функции.

Тут нет никакого противоречия. Функция в любом случае является конструктором объекта. А прототип другой функции — это тоже объект. Ничуть не хуже какого-нибудь другого.
И так статья получилась огромная, а замыкания — это все-таки несколько другая тема. А вы думаете, в контексте данной статьи стоило о них упомянуть?
По-моему, если создавать ИИ для решения задач из реального мира (и для полезного существования в реальном мире), то необходимо ему сразу давать реальные органы чувств и реальные манипуляторы.
Существование только в виртуальном мире (текст, графика и т.д.) - бесперспективно, т.к. разум, выращенный таким образом, никогда из виртуально мира вырваться не сможет.

Добавлю немного конкретики: можно, например, таким образом, научить ИИ физике, вводя в него законы, формулы, рисуя физические тела и векторы их взаимодействий. Но это будет только та физика, которая уже известна людям, и найти что-то новое, не входящее в рамки этих законов, ИИ не сможет, т.к. не будет для этого реальных, физических предпосылок.
По-моему отличный солюшен. Никакого JS, и любой размер изображения.
Разве использование overflow: hidden и opacity: 0 - это хак?
12 ...
9

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity