eai,
не порите чушь. Считать википедию авторитетным источником, как минимум, глупо. В объектно-ориентированном программировании базовое понятие объект, а не класс. Я вас прекрасно понимаю, не вы первый, кто переходит с классовых языков на JavaScript. Но не надо быть таким упёртым, почитайте статьи на этом сайте, почитайте очень хорошие статьи Дмитрия Сошникова (раз, два), а потом уже беритесь делать очередной никому не нужный костыль, имитирующий классовое ООП там, где его нет и не надо. |
Коля
1. Я не порю чушь, так как это не я сослался на вики 2. В ООП важно не объект а наследование, полиформизм и.т.д Нельзя же считать "С" с его структурами ООП языком. 3. Я не перехожу на JavaScript я использую JavaScript. 4. И Раз и Два я читал, извините поиском умею пользоваться. 5. Давай те будем как то по корректнее! 6. не понимаю почему тема сводиться к перепалки без обсуждения сути вопроса |
Цитата:
Цитата:
Цитата:
|
Цитата:
Мешает то что, что надо делать так var F = function() { } F.prototype = Parent.prototype Child.prototype = new F() Child.prototype.constructor = Child Child.superclass = Parent.prototype и еще по всякому и еще, я не говорю что JS плохой там или еще как. Просто он иной нежели например C++. И я пытаюсь использовать JS с принципами построения приложений ООП и не более. Всю тему я поднял, только для того что бы убедиться что я на верном или не верном пути проводя реинжениринг кода из AjaxOOP. |
Цитата:
Цитата:
Цитата:
Мне, например, по всем критериям хватает для организации наследования функции на 10 строк. /** * Создаёт конструктор, прототип которого наследует прототип текущего конструктора. * Для создания ничего не наследующего конструктора следует использовать Object.inherit({...}). * @param {Object} proto Объект с методами и свойствами, копирующимися в прототип создаваемого конструктора. * @return {Function} Созданный конструктор. */ Function.prototype.inherit = function(proto) { var that = this; proto = proto || {}; var constructor = proto.hasOwnProperty('constructor') ? proto.constructor : function() { that.apply(this, arguments); }; var F = function() {}; F.prototype = this.prototype; constructor.prototype = apply(new F(), proto); constructor.superclass = this.prototype; constructor.prototype.constructor = constructor; return constructor; };Она не добавляет никаких новых сущностей в язык, она просто упрощает создание и наследование конструкторов. |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
function apply(dst) { for (var i = 1; i < arguments.length; i++) { for (var prop in arguments[i]) { if (arguments[i].hasOwnProperty(prop)) { dst[prop] = arguments[i][prop]; } } } return dst; } Function.prototype.inherit = function(proto) { var that = this; proto = proto || {}; var constructor = proto.hasOwnProperty('constructor') ? proto.constructor : function() { that.apply(this, arguments); }; var F = function() {}; F.prototype = this.prototype; constructor.prototype = apply(new F(), proto); constructor.superclass = this.prototype; constructor.prototype.constructor = constructor; return constructor; }; var A = Object.inherit({ constructor: function(a) { this.a = a; }, method: function() { alert(this.a); } }); var B = A.inherit({ constructor: function() { B.superclass.constructor.apply(this, arguments); this.a++; } }); var a = new A(5); var b = new B(5); a.method(); b.method(); |
Беру таймот на разбор :-)
Спасибо P.S. Обдумал выпад на счет C++. Да я хочу статическую классовую модель, а поскольку это низя, то хочу максимально приближенное. |
а Алан Кей думал по-другому :blink:
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." The big idea is "messaging" -- that is what the kernal of Smalltalk/Squeak is all about (and it's something that was never quite completed in our Xerox PARC phase). The Japanese have a small word -- ma -- for "that which is in between" -- perhaps the nearest English equivalent is "interstitial". http://www.c2.com/cgi/wiki?AlanKayOnObjects |
А мне страуструп ближе
|
Часовой пояс GMT +3, время: 14:52. |