Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 02.11.2010, 08:53
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

eai,
не порите чушь. Считать википедию авторитетным источником, как минимум, глупо. В объектно-ориентированном программировании базовое понятие объект, а не класс.

Я вас прекрасно понимаю, не вы первый, кто переходит с классовых языков на JavaScript. Но не надо быть таким упёртым, почитайте статьи на этом сайте, почитайте очень хорошие статьи Дмитрия Сошникова (раз, два), а потом уже беритесь делать очередной никому не нужный костыль, имитирующий классовое ООП там, где его нет и не надо.
Ответить с цитированием
  #12 (permalink)  
Старый 02.11.2010, 09:39
Аватар для eai
eai eai вне форума
Аспирант
Отправить личное сообщение для eai Посмотреть профиль Найти все сообщения от eai
 
Регистрация: 09.07.2009
Сообщений: 36

Коля
1. Я не порю чушь, так как это не я сослался на вики
2. В ООП важно не объект а наследование, полиформизм и.т.д
Нельзя же считать "С" с его структурами ООП языком.
3. Я не перехожу на JavaScript я использую JavaScript.
4. И Раз и Два я читал, извините поиском умею пользоваться.
5. Давай те будем как то по корректнее!
6. не понимаю почему тема сводиться к перепалки без обсуждения сути вопроса
Ответить с цитированием
  #13 (permalink)  
Старый 02.11.2010, 09:48
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от eai
это не я сослался на вики
Вы сослались на фразу из неё.

Сообщение от eai
2. В ООП важно не объект а наследование, полиформизм и.т.д
Что из этого нет в JavaScript? И что вам мешает "нативно использовать ООП в нём"?
Сообщение от eai
Однако как я заметил и заметили другие члены сообщества в разных местах в интернете, нет , как бы это яснее выразиться ..., нативной что ли возможности использовать это.
Ответить с цитированием
  #14 (permalink)  
Старый 02.11.2010, 10:04
Аватар для eai
eai eai вне форума
Аспирант
Отправить личное сообщение для eai Посмотреть профиль Найти все сообщения от eai
 
Регистрация: 09.07.2009
Сообщений: 36

Сообщение от Kolyaj Посмотреть сообщение
Вы сослались на фразу из неё.

Что из этого нет в JavaScript? И что вам мешает "нативно использовать ООП в нём"?
Я сослался только потому, что Владлен мне мне указал что на эту статью. В ответ на его ссылку я указал что в этой ссылке содержится абзац, где указано обратное.

Мешает то что, что надо делать так
var F = function() { }
F.prototype = Parent.prototype
Child.prototype = new F()
Child.prototype.constructor = Child
Child.superclass = Parent.prototype

и еще по всякому

и еще, я не говорю что JS плохой там или еще как. Просто он иной нежели например C++. И я пытаюсь использовать JS с принципами построения приложений ООП и не более. Всю тему я поднял, только для того что бы убедиться что я на верном или не верном пути проводя реинжениринг кода из AjaxOOP.

Последний раз редактировалось eai, 02.11.2010 в 10:09.
Ответить с цитированием
  #15 (permalink)  
Старый 02.11.2010, 10:20
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от eai
Мешает то что, что надо делать так
Ну так это 5 строк кода, которые выносятся в отдельную функцию, вы же почему-то вместо этих пяти хотите сотню понаписать.

Сообщение от eai
И я пытаюсь использовать JS с принципами построения приложений ООП и не более.
С принципами построения приложений на С++, вы хотели сказать? А то из ваших слов ненавязчиво следует, что в С++ единственный рассово верный ООП.

Сообщение от eai
для того что бы убедиться что я на верном или не верном пути проводя реинжениринг кода из AjaxOOP.
Если подразумевается, на верном ли вы пути, что вообще взялись за 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;
};
Она не добавляет никаких новых сущностей в язык, она просто упрощает создание и наследование конструкторов.
Ответить с цитированием
  #16 (permalink)  
Старый 02.11.2010, 10:31
Аватар для eai
eai eai вне форума
Аспирант
Отправить личное сообщение для eai Посмотреть профиль Найти все сообщения от eai
 
Регистрация: 09.07.2009
Сообщений: 36

Сообщение от Kolyaj Посмотреть сообщение
Ну так это 5 строк кода, которые выносятся в отдельную функцию, вы же почему-то вместо этих пяти хотите сотню понаписать.
Может я и не прав, меня в этой библиотеке подкупил, тот синтаксис который я смогу использовать далее.

Сообщение от Kolyaj Посмотреть сообщение
С принципами построения приложений на С++, вы хотели сказать? А то из ваших слов ненавязчиво следует, что в С++ единственный рассово верный ООП.
Я такого не говорил :-) Однако признаю что синтаксис С++ мне нравиться.

Сообщение от Kolyaj Посмотреть сообщение
Если подразумевается, на верном ли вы пути, что вообще взялись за 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;
};
Она не добавляет никаких новых сущностей в язык, она просто упрощает создание и наследование конструкторов.
Вау, а можно пример использования ?
Ответить с цитированием
  #17 (permalink)  
Старый 02.11.2010, 10:42
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от eai
меня в этой библиотеке подкупил, тот синтаксис который я смогу использовать далее.
Синтаксис не важен, важна семантика. А она как раз в подобных библиотеках тщательно скрывается, а вместо неё выпирает несуществующая.


Сообщение от eai
а можно пример использования ?
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();
Ответить с цитированием
  #18 (permalink)  
Старый 02.11.2010, 10:48
Аватар для eai
eai eai вне форума
Аспирант
Отправить личное сообщение для eai Посмотреть профиль Найти все сообщения от eai
 
Регистрация: 09.07.2009
Сообщений: 36

Беру таймот на разбор :-)
Спасибо

P.S.
Обдумал выпад на счет C++. Да я хочу статическую классовую модель, а поскольку это низя, то хочу максимально приближенное.
Ответить с цитированием
  #19 (permalink)  
Старый 02.11.2010, 12:14
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а Алан Кей думал по-другому

"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
Ответить с цитированием
  #20 (permalink)  
Старый 02.11.2010, 12:17
Аватар для eai
eai eai вне форума
Аспирант
Отправить личное сообщение для eai Посмотреть профиль Найти все сообщения от eai
 
Регистрация: 09.07.2009
Сообщений: 36

А мне страуструп ближе
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск