Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Небольшая репозитошка (https://javascript.ru/forum/offtopic/31846-nebolshaya-repozitoshka.html)

FINoM 23.09.2012 01:23

Небольшая репозитошка
 
Наконец, руки дошли до слива кое-какого кода в на гитхаб. Так уж сложилось, что более-менее крупные проекты сделаны наполовину, поэтому пришлось слить всего несколько функций, которые накопал на форуме: https://github.com/finom/Functions (в каждой папке описание с js файлом). Английский знаю очень плохо (на уровне "чтоб понимали"), поэтому там может быть куча ошибок (которые с радостью исправлю).

В планах залить в этот репозиторий:
— Простейшую реализацию "классов", без сахара (все реализации, на мой взгляд, жутко перегружены, и нужна простая как пять копеек функция)
— Продолжить бороться и допилить defineProperty для ИЕ8. Возможно, даже, сделаю какое-то подобие наследования.
— Допилить эту хрень: http://javascript.ru/forum/project/2...ak-v-node.html и добавить сахарку. Не знаю, насколько это полезно, поэтому рассматриваю, как "захотелось сделать какую-то неведомую хрень".

FINoM 23.09.2012 19:03

Допилил классы. Самое "тяжелое" по количеству строк там — это поддержка разных аргументов.
Цитата:

Сообщение от Maxmaxmахimus
уже поздно бро, уже поздно)

Разница между нами в том, что я уже активно юзаю это хрень в проекте. А ты — ну сделал и сделал.

B~Vladi 24.09.2012 15:50

Оставьте вы уже животных в покое! Даёшь жизненные примеры!

FINoM 24.09.2012 16:51

У меня всё гораздо проще:
MyClass = Class( Parent, Constructor, prototype );


Вот такая запись:
MyClass = Class( Parent, function MyClass () {
  this.a = 3;
}, {
  method: function() {}
});


Аналогична вот такой:
MyClass = function MyClass () {
  this.a = 3;
}

MyClass.prototype = {
  method: function() {}
}

inherits( MyClass, Parent ); // самое простое наследование, которое можно найти в любом учебнике

Обычное сокращение синтаксиса, без изобретения всяких __construct__ (что это за херня вообще? Зачем эта дикая инкапсуляция?), просто возвращает констркутор.

Всяких super и другой ненужной фигни здесь нет, надо юзать apply и call. Тем более, при множественном наследовании нельзя с уверенностью сказать, где super а где не super.

FINoM 24.09.2012 16:58

Цитата:

Сообщение от Maxmaxmахimus
сразу видно человек не знаком с PHP

И? Мы разве на похапэ здесь кодим?
Цитата:

Сообщение от Maxmaxmахimus
super нужен для доступа к перекрытому методу. и он не фигня, иначе докажи обратное.

Цитата:

Сообщение от Maxmaxmахimus
че за бред?

Включи логику.

B~Vladi 24.09.2012 17:06

Цитата:

Сообщение от Maxmaxmахimus
super нужен для доступа к перекрытому методу. и он не фигня, я думал фигня это ненужная вещь, а это нужная вещь, иначе докажи обратное.

Если наследуемое свойство объекта перекрыто - значит так и должно быть. Если нужно обратиться к свойству предка - значит наследование построено неверно, либо кривая реализация у перекрывающего свойства (это относится только к методам).

B~Vladi 24.09.2012 17:09

Перечитай мой коммент ещё несколько раз.

FINoM 24.09.2012 17:11

Цитата:

Сообщение от Maxmaxmахimus
А как у тебя реализованные статические свойства?

Так же, как и в любом конструкторе, создаётся переменная, меняется в методе, определенном в самом конструкторе. Обычная традиционная инкапсуляция.
Цитата:

Сообщение от Maxmaxmахimus
дело в том что интуитисно понятно что метод с этим названием вызывается при конструировании обьекта.

Ты мне как-то писал в ЛС с предложением глянуть твою функцию, я тебе сказал, что ты пытаешься реализовать ООП как в других языках. Сейчас я в этом убедился, ты пытаешься сделать "как в похапэ".
Цитата:

Сообщение от Maxmaxmахimus
я не понял, у меня если родительского метода с таким именем нет то super === undefined , включая логику не понял зачем нам знать что супер а что не супер? я даже предложения если честно не понял вот и написал что бред. Напиши другими словами.

Ты наверно не понял, что я имею в виду под множественным наследованием. Имеется в виду, что один класс наследует сразу несколько, а не один.

FINoM 24.09.2012 17:29

Цитата:

Сообщение от Maxmaxmахimus
То есть допустим я должен в любой момент узнать сколько у меня котов например.

Ну вот и решай задачи с котами. Лично у меня не было задачи посчитать котов (количество экземпляров класса). А если надо будет, сделаю статичное свойство прямо в конструкторе:
MyClass.num = 0;
Да и вообще, приватное свойство — это то свойство, которое доступно экземпляру (каждому своё), а не всем экземплярам сразу.
Цитата:

Сообщение от Maxmaxmахimus
Что именно я пытаюсь сделать как в PHP прости? И что именно я пытаюсь сделать как в других языках?

super и какой-то __construct__.
Цитата:

Сообщение от Maxmaxmахimus
типа цепочка?

Нет, не цепочка.

Где-то было видео с какой-то русскоязычной конференции, где человек объяснял суть ООП в яваскрипте и описывал принцип копирования, в противовес наследованию.

FINoM 24.09.2012 17:30

http://vimeo.com/33393795 а вот и оно.


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