powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Одному мне не хватает этого в js?
25 сообщений из 81, страница 2 из 4
Одному мне не хватает этого в js?
    #38521073
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПрограмёра не доверять TypeScript'уНет причин ему не доверять.

Програмёр ЭТО ЖЕ НЕ УДОБНО!!!О чем я и говорю. Вопросы удобства (в том числе) как раз и решает TS на синтаксическом уровне.

В википедии есть более выхолощенный пример:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
var Parent = function( data ) {
    this.data = data || false;
    this.public_method = function() { return 'Public Method'; }
}
 
var Child = function() {
    this.public_method = function() { return 'Redefined public method'; }
    this.getData = function() { return 'Data: ' + this.data; }
}
 
Child.prototype = new Parent('test'); //суть прототипного наследования
var Test = new Child();
 
Test.getData(); // => "Data: test"
Test.public_method(); // => "Redefined public method"
Test.data; // => "test"



а как сделать, что бы получилось типа такого 15391297 ? Как это сделать описанным методом я не вижу... Если это только я не вижу, тогда покажите пожалуйста. Может часть моих претензий к js просто не обоснована никак, и реализовать полноценную структуру объектов можно не прибегая к каким-либо трюкам.
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521099
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёра как сделать, что бы получилось типа такого 15391297 ? http://jsfiddle.net/3AVEN/
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521126
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечПрограмёра как сделать, что бы получилось типа такого 15391297 ? http://jsfiddle.net/3AVEN/

а есть принципиальная разница между методом extend и моим методом ext? Это ведь не прямое наследование на прототипах, о котором мы говорим. Я просто определил свою цепочку прототипов (в TObject).. тут как бы без разницы, мне всего лишь показалось так удобнее (хотя да, есть и недостатки, так как метод hasOwnProperty например теряет свой смысл)... но это не суть :)

Кстати, как вам перегрузка методов? покритикуйте пожалуйста... удобно, не удобно, не нужно, нужно и удобно, но есть идеи получше и т.д.?
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521134
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот последний вариант... Нету ничего лишнего в trace, в аргументах функций допустимы значения null и undefined (хотя не знаю зачем нужно последнее в аргументе, но всё же ввёл поддержку), и добавил возврат значений из таких перегруженных методов (изначально почему-то пропустил, не о том думал видимо ).

итак, код:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
Object.prototype.ext = function(construct, args){
  construct.apply(this, args);
  this._prototypes.push(construct);
}

Object.prototype.instanceOf = function(className){
  if(this.constructor.name===className) return true;
  if(typeof(this._prototypes)==='undefined') return false;
  var res = false;
  for(var i=0; i<this._prototypes.length; i++){
    if(this._prototypes[i].name===className){
      res=true;
      break;
    }
  }
  return res;
}

Object.prototype._ = function(types, func){
  var obj = this;
  this[func.name] = function(){
    var err = TypeError();
    var trace = err.stack.split("\n").slice(3).join("\n");
    if(arguments.length<types.length){
      err.message = 'too few arguments in function '+obj.constructor.name+'.'+func.name+"\n"+trace;
      throw err;
    }
    if(arguments.length>types.length){
      err.message = 'too many arguments in function '+obj.constructor.name+'.'+func.name+"\n"+trace;
      throw err;
    }
    for(var i=0; i<arguments.length; i++){
      if((arguments[i]===null && types[i]!=="null") 
      || (typeof(arguments[i])==='undefined' && types[i]!=='undefined') 
      || !arguments[i].instanceOf(types[i])
      ){
        err.message = 'argument '+(i+1)+' in function '+obj.constructor.name+'.'+func.name+' must be a '+types[i]+' but '+
                      arguments[i].constructor.name+" is given\n"+trace;
        throw err;
      }
    }
    func.apply(obj, arguments);
  }
}

Object.prototype.__ = function(types, func){
  var obj = this;
  var f = this[func.name];
  this[func.name] = function(){
    var fail = false;
    var err = TypeError();
    err.validateArgumentsError = true;
    var trace = err.stack.split("\n").slice(3).join("\n");
    try{
      try{
        var argsType = [];
        for (var i=0; i<arguments.length; i++){
          argsType.push(arguments[i]!==null && typeof(arguments[i])!=='undefined' 
                      ? arguments[i].constructor.name 
                      : (arguments[i]===null ? 'null' : 'undefined')
          );
        }
        if(arguments.length<types.length){
          err.message = "there are no method "+obj.constructor.name+'.'+func.name+"("+argsType.join(", ")+")\n"+trace;
          throw err;
        }
        if(arguments.length>types.length){
          err.message = "there are no method "+obj.constructor.name+'.'+func.name+"("+argsType.join(", ")+")\n"+trace;
          throw err;
        }
        for(var i=0; i<arguments.length; i++){
          if((arguments[i]===null && types[i]!=="null") 
          || (typeof(arguments[i])==='undefined' && types[i]!=='undefined') 
          || !arguments[i].instanceOf(types[i])
          ){
            err.message = "there are no method "+obj.constructor.name+'.'+func.name+"("+argsType.join(", ")+")\n"+trace;
            throw err;
          }
        }
      }catch(error){
        fail = true;
        if(typeof(f)!=='undefined'){
          return f.apply(obj, arguments);
        }else{
          throw error;
        }
      }
      if (!fail) {return func.apply(obj, arguments);}
    }catch(higherLevelError){
      if(higherLevelError.validateArgumentsError){
        throw err;
      }else{
        throw higherLevelError;
      }
    }
  }
}

function TObject(){
  this._prototypes=[];
}




использовать вот так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function MyTestObject(){
  this.ext(TObject, []);
  this._(['String', 'Number', 'TObject'], function tryVal(a1, a2, a3){
    alert('hi');
  });
  
  this.__(['String', 'Number', 'TObject'], function try2(a1, a2, a3){
   alert('hi');
  });
  
  this.__(['String'], function try2(a1){
     return a1;
  });
}

var t = new MyTestObject();
alert(t.try2('hello', 'hi'));
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521135
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёра есть принципиальная разница между методом extend и моим методом ext? Это ведь не прямое наследование на прототипах, о котором мы говорим. Я просто определил свою цепочку прототипов (в TObject)как я понимаю, ты отказался от методов в прототипах, и теперь для каждого экземпляра создаются новые методы.
это плохо, неэкономно.
к тому же нельзя позже добавить методы в базовый класс, так чтобы они были видны в дочерних.

ПрограмёрКстати, как вам перегрузка методов? покритикуйте пожалуйста... удобно, не удобно, не нужно, нужно и удобно, но есть идеи получше и т.д.?первый же вопрос - как вызывать родительский вариант из дочернего? возможно такое?
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521146
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечПрограмёра есть принципиальная разница между методом extend и моим методом ext? Это ведь не прямое наследование на прототипах, о котором мы говорим. Я просто определил свою цепочку прототипов (в TObject)как я понимаю, ты отказался от методов в прототипах, и теперь для каждого экземпляра создаются новые методы.
это плохо, неэкономно.
к тому же нельзя позже добавить методы в базовый класс, так чтобы они были видны в дочерних.

ПрограмёрКстати, как вам перегрузка методов? покритикуйте пожалуйста... удобно, не удобно, не нужно, нужно и удобно, но есть идеи получше и т.д.?первый же вопрос - как вызывать родительский вариант из дочернего? возможно такое?

как и ранее при таком методе наследования, с небольшим изворотом (не знаю, может представленный Вами метод лишён данного недостатка, ещё не разобрался):
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
function MyTestObject(){
  this.ext(TObject, []);
  
  this.__(['String', 'Number'], function try2(a1, a2){
   return a1+a2;
  });
  
  this.__(['String'], function try2(a1){
     return a1;
  });
  
  this._(['Number'], function onlyValidate(num){
     return num*2;
  })
}

function Child(){
  this.ext(MyTestObject, []);
  
  var parentTry2 = this.try2;
  this.__(['String', 'Number'], function try2(a1, a2){
    return parentTry2(a1, a2*2);
  })
}

var t = new Child();
alert(t.try2('hello'));
alert(t.try2('hello', 10));
alert(t.onlyValidate(8));
t.try2(1, 2);



код alert(t.try2('hello', 10)); выведет "hello20". То есть метод благополучно перекрыт и из него вызван метод предка.
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521347
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёрдавайте так... просто нужна аналогия. вот пример классового наследования:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
class Animal{
  public:
    Animal(int legs){
      this->legs = legs;
    }
    int getLegs(){
      return this->legs;
    }
  private:
    int legs;
}

class Rabbit: public Animal{
  public:
    Rabbit(int jumpLength): Animal(4){
      this->jumpLength = jumpLength;
    }
  private:
    int jumpLength;
}
class Human: public Animal{
  public:
    Human(int height): Animal(2){
      this->height = height;
    }
  private:
    int height;
}
class Bird: public Animal{
  public:
    Bird(bool canFly, int legs): Animal(legs){
      this->canFly = canFly;
    }
  private:
    bool canFly;
}



Каким образом можно повторить данную структуру на прототипах?
Пойдет такой вариант?

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function Animal(Obj) {
	Obj=Obj||{};
	this.legs=Obj.legs;
	this.getLegs=function() {
		alert(this.legs);
	};
};
function Rabbit(Obj) {
	this.legs = 4;
	this.jumpLength=Obj.jumpLength;
};
Rabbit.prototype = new Animal();
big = new Rabbit({jumpLength: 10});
small = new Rabbit({jumpLength: 5});
big.getLegs();
alert(small.jumpLength);
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521411
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

это ведь шутка? ))
Если нет, то точно не подойдёт, так как это сейчас у нас в предке только одно свойство legs которое считается обычным присваиванием. А если бы это было значение, высчитывающееся по сложной формуле исходя из входного параметра конструктора? Правильно я понимаю, в данном случае пришлось бы повторять эту формулу в конструкторах всех потомков? А если таких свойств у объекта-предка дофига?

В общем, если я не ошибся, то вариант не супер. :)
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521489
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёрэто сейчас у нас в предке только одно свойство legs которое считается обычным присваиванием. А если бы это было значение, высчитывающееся по сложной формуле исходя из входного параметра конструктора? Правильно я понимаю, в данном случае пришлось бы повторять эту формулу в конструкторах всех потомков?
Меня всегда удивляли такого рода "задания"... Типа "сделайте вот так"! Сделаешь - а тебе тут же "но это-то просто! а у меня вона как дальше сложно и много!"
И что после этого делать? Писать все за тебя точно никто "забесплатно" не будет...

ПрограмёрА если таких свойств у объекта-предка дофига?
Да какая разница сколько их штук? Они все и занаследуются...

ПрограмёрВ общем, если я не ошибся, то вариант не супер. :)
В конечном счете решать-то тебе...
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521506
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр , можно и так вот сделать...

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function Animal(Legs) {
	this.legs=Legs;
	this.getLegs=function() {
		alert(this.legs);
	};
};
function Rabbit(jumpLength) {
	this.jumpLength=jumpLength;
};
Rabbit.prototype = new Animal(4);
big = new Rabbit(10);
small = new Rabbit(5);
big.getLegs();
alert(small.jumpLength);
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521559
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

А за меня делать не надо )) Я не пишу никакое js приложение сейчас. Это как-бы в целях самообразования, а структуру приведённую я от балды взял, Вы же не думаете, что мне в скрипте нужен подсчёт людей и птичек )))

в последнем варианте возможно создать аналог класса Bird? То есть с прокидыванием одного аргумента в конструктор Animal (не перекрывая в Bird)?

Если возможно, тогда соглашусь, что данный вариант позволяет воссоздать если не любой функционал классового наследования, то почти любой в любом случае.
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521629
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёриспользовать вот так:
Код: javascript
1.
2.
this.ext(TObject, []);
  this._(['String', 'Number', 'TObject'],

Программирование этой перегруженной скобками рутины в итоге займет больше времени, чем программирование самой бизнес-логики на получившихся объектах. Среда, поддерживающая язык, поддерживающий перегрузку нативно, предложит варианты перегрузок с перечнем параметров, а в js никаких подсказок от этих костылей ждать не приходится, все перегрузки известны лишь их автору. Нормальных подсказок по свойствам и методам объектов тоже не будет (куцая кое-где есть) — следствие слабой типизации. Но со временем и автор начнет забывать и структуру объектов и варианты перегрузок, а если следовать всем-всем правилам разработки, то все это еще и документировать нужно. Получается, кучу времени программист работает вхолостую, а бонусов от использования принципов ООП нет и не предвидится.

Так в чем же тут профит по сравнению с обычным лапшекодом, делающим тоже самое, но как минимум вдвое короче?
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521822
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрВы же не думаете, что мне в скрипте нужен подсчёт людей и птичек )))
Почем мне знать... Это ведь ты пример привел, не я.

Програмёрв последнем варианте возможно создать аналог класса Bird? То есть с прокидыванием одного аргумента в конструктор Animal (не перекрывая в Bird)?
Даже в последнем моем варианте видна "независимость" аргументов "животного" от "кролика"...

Я правильно понял про птиц?

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
function Animal(Legs) {
	this.legs=Legs;
	this.getLegs=function() {
		alert(this.legs);
	};
};
function Rabbit(jumpLength) {
	this.jumpLength=jumpLength;
};
function Bird(canFly,Legs) {
	this.canFly=canFly;
};
Bird.prototype = new Animal(2);
sparrow = new Bird(false);
sparrow.getLegs();
alert(sparrow.canFly);
eagle = new Bird(true);
eagle.getLegs();
alert(eagle.canFly);
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521838
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

про птиц немного не так. Представим, что мифический грифон - это тоже птица )) У него 4 ноги (лапы), а у ястреба 2. Так вот, задумка была в написании Bird таким образом, что бы без лишних изворотов в итоге можно было создать обе эти птички (опять же не переопределяя это свойство в потомке, так как это у нас присваивание простого значения, но если значение будет считаться по сложному алгоритму, сами понимаете, в каждом конструкторе его дублировать - не айс).
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521844
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёрпро птиц немного не так. Представим, что мифический грифон - это тоже птица )) У него 4 ноги (лапы), а у ястреба 2.
Аааа... Вона какая птица!
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521851
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПрограмёриспользовать вот так:
Код: javascript
1.
2.
this.ext(TObject, []);
  this._(['String', 'Number', 'TObject'],

Программирование этой перегруженной скобками рутины в итоге займет больше времени, чем программирование самой бизнес-логики на получившихся объектах. Среда, поддерживающая язык, поддерживающий перегрузку нативно, предложит варианты перегрузок с перечнем параметров, а в js никаких подсказок от этих костылей ждать не приходится, все перегрузки известны лишь их автору. Нормальных подсказок по свойствам и методам объектов тоже не будет (куцая кое-где есть) — следствие слабой типизации. Но со временем и автор начнет забывать и структуру объектов и варианты перегрузок, а если следовать всем-всем правилам разработки, то все это еще и документировать нужно. Получается, кучу времени программист работает вхолостую, а бонусов от использования принципов ООП нет и не предвидится.

Так в чем же тут профит по сравнению с обычным лапшекодом, делающим тоже самое, но как минимум вдвое короче?

тут не могу не согласиться... перечисленные проблемы имеют место. Но разве то же самое нельзя сказать и о функционале фреймворков? Например те же ExtJS и YUI позволят нормально задокументировать классы с помощью например JSDoc и будет ли тот же eclipse подсказывать название классов созданных с помощью озвученных фреймворков.

Однако ними же пользуются.. и пользуются достаточно большое количество программистов.
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521856
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaПрограмёрпро птиц немного не так. Представим, что мифический грифон - это тоже птица )) У него 4 ноги (лапы), а у ястреба 2.
Аааа... Вона какая птица!

ничего другого в голову не пришло, летающего и имеющего при этом больше 2 лап
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521861
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,
Объект "Птичка":

Птичка.нога1=0;
Птичка.нога2=1;
----------
Птичка.нога3=2;
Птичка.нога4=3;

Для грифона будет Птичка.length будет 4, а для всех остальных птичек - 2.
Типа, if( Птичка.length>2) alert("Грифон детектед");
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521887
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вариант с "разноногими" птицами + "сложное вычисление" параметров для "животного"...

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
function Animal(Legs) {
	this.legs=calcLegs(Legs);
	this.getLegs=function() {
		alert(this.legs);
	};
	function calcLegs(Legs){
		return Legs+' шт.';
	};
};
function Bird(Legs,canFly) {
	Animal.apply(this,arguments);
	this.canFly=canFly;
};
Bird.prototype = new Animal();
griffin = new Bird(4,true);
griffin.getLegs();
alert(griffin.canFly);
chicken = new Bird(2,false);
chicken.getLegs();
alert(chicken.canFly);
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521916
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaВот вариант с "разноногими" птицами + "сложное вычисление" параметров для "животного"...

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
function Animal(Legs) {
	this.legs=calcLegs(Legs);
	this.getLegs=function() {
		alert(this.legs);
	};
	function calcLegs(Legs){
		return Legs+' шт.';
	};
};
function Bird(Legs,canFly) {
	Animal.apply(this,arguments);
	this.canFly=canFly;
};
Bird.prototype = new Animal();
griffin = new Bird(4,true);
griffin.getLegs();
alert(griffin.canFly);
chicken = new Bird(2,false);
chicken.getLegs();
alert(chicken.canFly);



И дошли до раскрытия (развёртывания) представленного мной варианта с некоторыми переработками.
1. Зачем в прототип писать полноценный объект, если точно тот же объект с расширенными возможностями станет результирующим. То есть по сути создаётся одна дополнительная копия объекта, все свойства которого перекрыты потомком.
2. Если я на входе конструктора Animal ожидаю объект, с которым собираюсь проводить некоторые манипуляции (например это массив, и я хочу получить его длину и т.д.), то Bird.prototype = new Animal(); может привести к ошибке, если я не предусмотрю такой вызов. А причина моих попыток как-раз в том, что бы как можно больше предусматривалось автоматически, то есть не писать лишней логики.

Вместо этих двух пунктов я просто ввёл собственную цепочку прототипов (точнее их конструкторов) и обернул такое "наследование" в отдельный метод.
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521924
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeПрограмёр,
Объект "Птичка":

Птичка.нога1=0;
Птичка.нога2=1;
----------
Птичка.нога3=2;
Птичка.нога4=3;

Для грифона будет Птичка.length будет 4, а для всех остальных птичек - 2.
Типа, if( Птичка.length>2) alert("Грифон детектед");

тут не понял :) Возможно мысль хорошая, но я даже идеи не понял (что бы как-то подумать о реализации).
Можно как-то более по-народному? Ну или пример в коде, без разницы :)
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38521950
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр1. Зачем в прототип писать полноценный объект, если точно тот же объект с расширенными возможностями станет результирующим. То есть по сути создаётся одна дополнительная копия объекта, все свойства которого перекрыты потомком.
2. Если я на входе конструктора Animal ожидаю объект, с которым собираюсь проводить некоторые манипуляции (например это массив, и я хочу получить его длину и т.д.), то Bird.prototype = new Animal(); может привести к ошибке, если я не предусмотрю такой вызов. А причина моих попыток как-раз в том, что бы как можно больше предусматривалось автоматически, то есть не писать лишней логики.
Я х/з что ты опять пытаешся объяснить...
Но суть от этого не поменяется.
Есть вот такой вот язык... С вот такими вот возможностями... Что тебе с ним делать и как использовать - решать тебе.
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38522081
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёртут не могу не согласиться... перечисленные проблемы имеют место. Но разве то же самое нельзя сказать и о функционале фреймворков? Можно.

ПрограмёрОднако ними же пользуются.. и пользуются достаточно большое количество программистов.Ну так они уже кем-то написаны, оттестированы, прекрасно задокументированы, обладают встроенным спектром решений конкретных прикладных задач, а не только абстрактных программистских, и сделаны максимально удобными в использовании. Заказчики не приходят с абстрактными задачами, за их решение не платят зарплату, так что сами по себе они никому не интересны. Никто из разработчиков популярных фреймворков не вываливал полусырую идею в интернеты с вопросом "а только ли нам этого не хватает?". Если бы они так сделали, то и получили бы такой же ответ — ага, только вам.

Перегрузка не удобна в использовании и не взлетит. Наследование может и да, законченной реализации в твоем исполнении пока не видно.
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38522127
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПрограмёртут не могу не согласиться... перечисленные проблемы имеют место. Но разве то же самое нельзя сказать и о функционале фреймворков? Можно.

ПрограмёрОднако ними же пользуются.. и пользуются достаточно большое количество программистов.Ну так они уже кем-то написаны, оттестированы, прекрасно задокументированы, обладают встроенным спектром решений конкретных прикладных задач, а не только абстрактных программистских, и сделаны максимально удобными в использовании. Заказчики не приходят с абстрактными задачами, за их решение не платят зарплату, так что сами по себе они никому не интересны. Никто из разработчиков популярных фреймворков не вываливал полусырую идею в интернеты с вопросом "а только ли нам этого не хватает?". Если бы они так сделали, то и получили бы такой же ответ — ага, только вам.

Перегрузка не удобна в использовании и не взлетит. Наследование может и да, законченной реализации в твоем исполнении пока не видно.

ясное дело я 20 строчек кода не буду пытаться протолкнуть как гениальный, полноценный фреймворк... Просто идея появилась, решил уточнить (перед длительным сидением над некому не нужной реализацией). Пока явных "фе" не было )) Всё сводится к незаконченности идеи :)
...
Рейтинг: 0 / 0
Одному мне не хватает этого в js?
    #38522145
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр1. Зачем в прототип писать полноценный объект, если точно тот же объект с расширенными возможностями станет результирующим. То есть по сути создаётся одна дополнительная копия объекта, все свойства которого перекрыты потомком.
2. Если я на входе конструктора Animal ожидаю объект, с которым собираюсь проводить некоторые манипуляции (например это массив, и я хочу получить его длину и т.д.), то Bird.prototype = new Animal(); может привести к ошибке, если я не предусмотрю такой вызов. А причина моих попыток как-раз в том, что бы как можно больше предусматривалось автоматически, то есть не писать лишней логики.

Вместо этих двух пунктов я просто ввёл собственную цепочку прототипов (точнее их конструкторов) и обернул такое "наследование" в отдельный метод.именно эти два пункта учтены в том варианте, который я привел 15393424 - там создается стандартная цепочка прототипов, но без полноценного объекта в прототипе.
...
Рейтинг: 0 / 0
25 сообщений из 81, страница 2 из 4
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Одному мне не хватает этого в js?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]