02.11.2010, 08:53
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
eai,
не порите чушь. Считать википедию авторитетным источником, как минимум, глупо. В объектно-ориентированном программировании базовое понятие объект, а не класс.
Я вас прекрасно понимаю, не вы первый, кто переходит с классовых языков на JavaScript. Но не надо быть таким упёртым, почитайте статьи на этом сайте, почитайте очень хорошие статьи Дмитрия Сошникова ( раз, два), а потом уже беритесь делать очередной никому не нужный костыль, имитирующий классовое ООП там, где его нет и не надо.
|
|
02.11.2010, 09:39
|
|
Аспирант
|
|
Регистрация: 09.07.2009
Сообщений: 36
|
|
Коля
1. Я не порю чушь, так как это не я сослался на вики
2. В ООП важно не объект а наследование, полиформизм и.т.д
Нельзя же считать "С" с его структурами ООП языком.
3. Я не перехожу на JavaScript я использую JavaScript.
4. И Раз и Два я читал, извините поиском умею пользоваться.
5. Давай те будем как то по корректнее!
6. не понимаю почему тема сводиться к перепалки без обсуждения сути вопроса
|
|
02.11.2010, 09:48
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от eai
|
это не я сослался на вики
|
Вы сослались на фразу из неё.
Сообщение от eai
|
2. В ООП важно не объект а наследование, полиформизм и.т.д
|
Что из этого нет в JavaScript? И что вам мешает "нативно использовать ООП в нём"?
Сообщение от eai
|
Однако как я заметил и заметили другие члены сообщества в разных местах в интернете, нет , как бы это яснее выразиться ..., нативной что ли возможности использовать это.
|
|
|
02.11.2010, 10:04
|
|
Аспирант
|
|
Регистрация: 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.
|
|
02.11.2010, 10:20
|
Новичок на форуме
|
|
Регистрация: 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;
};
Она не добавляет никаких новых сущностей в язык, она просто упрощает создание и наследование конструкторов.
|
|
02.11.2010, 10:31
|
|
Аспирант
|
|
Регистрация: 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;
};
Она не добавляет никаких новых сущностей в язык, она просто упрощает создание и наследование конструкторов.
|
Вау, а можно пример использования ?
|
|
02.11.2010, 10:42
|
Новичок на форуме
|
|
Регистрация: 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();
|
|
02.11.2010, 10:48
|
|
Аспирант
|
|
Регистрация: 09.07.2009
Сообщений: 36
|
|
Беру таймот на разбор :-)
Спасибо
P.S.
Обдумал выпад на счет C++. Да я хочу статическую классовую модель, а поскольку это низя, то хочу максимально приближенное.
|
|
02.11.2010, 12:14
|
|
|
|
Регистрация: 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
|
|
02.11.2010, 12:17
|
|
Аспирант
|
|
Регистрация: 09.07.2009
Сообщений: 36
|
|
А мне страуструп ближе
|
|
|
|