方案1 - 一切正常:模式需要:創建新的對象,它返回一個executeable功能,並繼承了原型
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
現在我想它甚至awesomer:
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
新AwesomeObject應該返回一個可執行的函數本身,所以我可以說'真棒();'
但我希望它也繼承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;
}
範圍,但我認爲必須有一個更好的辦法,更好的模式,是什麼呢?
這個問題讓我發狂,幫助會非常感激。
一般:那
- 可以用新的
- 創建如何創建一個函數對象返回一個可以執行
- 繼承所有屬性和給定的原型方法函數對象
?
有沒有辦法?
THX 弗朗茨
我認爲只是從原型複製你需要的功能。你不需要使用apply();只是做self.doStuff = prototype.doStuff – Joel 2011-05-05 10:27:28