Рубрика «конструктор» - 6

В прошлый раз мы попытались разобраться со следующими вещами:

  • 1. Не смотря на расхожее мнение «всё в JS является объектами» — это не так, мы выяснили, что из 6 доступных программисту типов данных аж 5 является примитивами и лишь один представляет тип объектов.
  • 2. Про объекты мы узнали, что это такая структура данных, которая содержит в себе пары «ключ-значение». Значением может быть любой из типов данных (и это будет свойство объекта) или функция (и это будет метод объекта).
  • 3. А вот примитивы – это не объекты. Хотя с ними и можно работать как с объектом (и это вызывает заблуждение что примитив – это объект), но…
  • 4. Переменные можно объявить как по простому (литерально) (var a = ‘str’), так и через функцию-конструктор (обёртка)(var a = new String(‘str’)). Во втором случае мы получим уже не примитив, а объект созданный конструктором String(). (что за магический оператор new и что такое функция-конструктор мы узнаем дальше).
  • 5. Узнали, что именно за счёт создания обёртки над примитивом (new String(‘str’)) c ним можно работать как с объектом. Именно эту обёртку создаёт интерпретатор вокруг примитива, когда мы пытаемся работать с ним как с объектом, но после выполнения операции она разрушается (поэтому примитив никогда не сможет запомнить свойство, которое мы ему присвоим a.test = ‘test’- свойство test исчезнет с обёрткой).
  • 6. Узнали, что у объектов есть метод toString() который возвращает строковое представление объекта (для типа number valueOf() – вернёт числовое значение).
  • 7. Поняли, что при выполнении операций конкатенации или математических операциях примитивы могут переопределить свой тип в нужный. Для этого они используют функции-обёртки своих типов, но без оператора new (str = String(str)).(в чём разница и как это работает, поговорим дальше)
  • 8. И наконец, узнали, что typeof берёт значения из жёстко зафиксированной таблицы (вот откуда ещё одно заблуждение, основанное на typeof null //object).

Читать полностью »

Пол года назад, читая Хабр, я наткнулся на заметку о канадской компании EZ-Robots, которая продает детали для построения домашнего робота. Детская мечта «собрать себе робота» была как никогда проста в реализации, и мы с другом решили приобрести комплект.

Для страховки мы заказали два «The Complete Robot Kit», каждый из которых обошелся в 212$. В каждом комплекте содержатся:

  • EZ-B v3 Bluetooth Robot Controller
  • Беспроводная веб-камера (зарядка для нее имеет форму вилки под американскую розетку, но заряжать можно и от любого USB)
  • Ультразвуковой датчик расстояния
  • 3 сервопривода с ограниченным углом поворота
  • 2 сервопривода непрерывного вращения
  • 2 колеса
  • Несколько дополнительных проводов

Ждать долго не хотелось, поэтому выбрали аэро-доставку, а именно Small Packet International – Air, за 60$. На сайте канадской почты скорость доставки была указана «In as little as 6 days». На деле преимущества канадской логистики оказались не столь очевидными. Дня через два после оформления заказа пришло письмо, о том что посылка отправилась к месту назначения. Затем три недели никаких вестей не поступало. После нескольких неудачных попыток добиться ответа от канадской почты, я написал в саппорт ez-robots. На следующий день пришел ответ, в котором сообщалось, что доставка может занимать 3-4 недели. И действительно, по прошествии 4 недель с оформления заказа части будущего робота наконец-то приземлились в московском почтамте.
Читать полностью »

Счастливое детство с ЗD принтеромКогда в детстве мне надо было соединить несколько деталей из разных конструкторов, обычно приходилось пользоваться пластилином. Не самая удобная штука, но ничего лучшего не находилось — настоящие “взрослые” инструменты были слишком велики, тяжелы и недоступны, а что такое скотч, в 80-е было известно лишь избранным. Современным детям повезло куда больше. F.A.T. Lab совместно с Sy-Lab создали набор высококачественных 3D-моделей коннекторов, с помощью которых можно соединять между собой детали десяти популярных детских конструкторов — Free Universal Construction Kit.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js