Небольшая репозитошка
Наконец, руки дошли до слива кое-какого кода в на гитхаб. Так уж сложилось, что более-менее крупные проекты сделаны наполовину, поэтому пришлось слить всего несколько функций, которые накопал на форуме: https://github.com/finom/Functions (в каждой папке описание с js файлом). Английский знаю очень плохо (на уровне "чтоб понимали"), поэтому там может быть куча ошибок (которые с радостью исправлю).
В планах залить в этот репозиторий: — Простейшую реализацию "классов", без сахара (все реализации, на мой взгляд, жутко перегружены, и нужна простая как пять копеек функция) — Продолжить бороться и допилить defineProperty для ИЕ8. Возможно, даже, сделаю какое-то подобие наследования. — Допилить эту хрень: http://javascript.ru/forum/project/2...ak-v-node.html и добавить сахарку. Не знаю, насколько это полезно, поэтому рассматриваю, как "захотелось сделать какую-то неведомую хрень". |
Допилил классы. Самое "тяжелое" по количеству строк там — это поддержка разных аргументов.
Цитата:
|
Оставьте вы уже животных в покое! Даёшь жизненные примеры!
|
У меня всё гораздо проще:
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. |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Перечитай мой коммент ещё несколько раз.
|
Цитата:
Цитата:
Цитата:
|
Цитата:
MyClass.num = 0;Да и вообще, приватное свойство — это то свойство, которое доступно экземпляру (каждому своё), а не всем экземплярам сразу. Цитата:
Цитата:
Где-то было видео с какой-то русскоязычной конференции, где человек объяснял суть ООП в яваскрипте и описывал принцип копирования, в противовес наследованию. |
http://vimeo.com/33393795 а вот и оно.
|
Цитата:
Лучше я поясню на коде. function Constructor () {} Constructor.prototype.method = function (){}; // Наследуемое свойство method. var object = new Constructor(); object.method = function (){}; // Наследуемое свойство перекрыто. // Теперь при работе с объектом object нужно обращаться к свойствам напрямую: object.method(); // но никак не: object.constructor.prototype.method.call(method); // Или через костыли, вроде твоего. Подобные записи говорят о том, что наследование реализовано криво с точки зрения ООП. Потомок ничего не должен знать о своих предках, они умерли для него. У него есть только то, что он унаследовал или приобрел. Для того, что бы не копипастить реализации методов и при этом иметь возможность выполнять методы предков существует делегирование, которое реализуется в коде перекрываемого метода: object.method = function (){ // some code return this.constructor.prototype.method.call(this); }; Так понятно? |
Хватит тупить. Достал.
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
ок
|
Вот вы развели дискуссию... Какая вообще разница в том кто как расширяет объекты, кому как удобно, благо JavaScript это с легкостью позволяет... И обкакивать тот или иной способ вообще не вижу смысла.
Цитата:
А вот если нужно снаружи получить вызов родительского свойства, то это это уже конечно не правильно. И я так понимаю ты именно это и имел ввиду. В этом случае конечно же наследование будет построено не правильно. |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
object.method = function (){ // some code return this.constructor.prototype.method.call(this); }; |
Цитата:
|
Цитата:
пример на PHP: class Parent { function hehehe() { } } class Child extends Parent { function hehehe() { parent::hehehe(); // вот про это я бл... и говорю!!! } } |
Цитата:
Цитата:
|
Цитата:
пасхалки не забудь насобирать - батарейки BUBACELL и мониторы FONY, кружка LINUX 100% OPENSAUCE, 42 IS THE ANSWER неплохо радуют ! полный список пасхалок не буду трезвонить :) я проходил неспеша, тоже на харде. осматривал каждую комнату и вспомнинал, как было там, в первой халфе. |
Часовой пояс GMT +3, время: 06:44. |