спасибо, это помогло мне избавиться от узла, который у меня был в мыслях

рий 1 - все работает:

var AwesomeObject = function()
{
   var self = this;
   self.whatstuff = 'really awesome';
}

AwesomeObject.prototype.doStuff = function()
{
   var self = this;
   console.log('i did '+self.whatstuff+' stuff');
   return self;
}

var awesome = new AwesomeObject(); //returns a new AwesomeObject
awesome.doStuff(); // prints 'i did really awesome stuff' on the console

Теперь я хочу, чтобы это даже удивительно:

var AwesomeObject = function()
{  
   var f = function() { console.log('i am awesome'); }
   var self = f;
   self.whatstuff = 'really awesome';
   return self;
}

AwesomeObject.prototype.doStuff = function()
{
   var self = this;
   console.log('i did '+self.whatstuff+' stuff');
   return self;
}

var awesome = new AwesomeObject(); //returns the interal f object
awesome(); // prints 'i am awesome'
awesome.doStuff(); // throws an error

new AwesomeObject должен сам возвращать исполняемую функцию, чтобы я мог сказать «awesome ();»

но я хочу, чтобы это унаследовалоAwesomeObject.prototype, слишком.

добавлениеself.prototype = AwesomeObject.prototype; не помогает.

var AwesomeObject = function()
{  
   var f = function() { console.log('i am awesome'); }
   var self = f;
   self.whatstuff = 'really awesome';
   self.prototype =  AwesomeObject.prototype;
   return self;
}

хорошо, я могу скопироватьAwesomeObject.prototype функции - одна за другой - в сферуf

var AwesomeObject = function()
{  
   var f = function() { console.log('i am awesome'); }
   var self = f;
   self.whatstuff = 'really awesome';
   self.doStuff =  function() { AwesomeObject.prototype.doStuff.apply(self,arguments); }
   return self;
}

но я думаю, что должен быть лучший путь, лучший образец, что это?

эта проблема сводит меня с ума, помощь будет очень признателен.

в общем: как создать функциональный объект, который

может быть создан с новымвозвращает объект функции, который может быть выполненнаследует все свойства и методы данного прототипа

?

есть ли способ?

спасибо Франц

Ответы на вопрос(3)

Ваш ответ на вопрос