我有一個Factory類創建了一個Widget對象。 Factory對象需要稍後回調Widget對象的「私有方法」,以傳遞它一些ajax信息。到目前爲止,我唯一實現的方法是在Widget中創建一個公共方法,它將私有方法返回到工廠,然後刪除它自己,然後Factory返回新的Widget,同時保留指向私有方法的指針。下面是一個簡單的例子:javascript中的「朋友類」
function Factory()
{
var widgetCallback = null;
this.ajaxOperation = function()
{
//some ajax calls
widgetCallback('ajaxresults');
}
this.getNewWidget = function()
{
var wid = new Widget();
widgetCallback = wid.getCallback();
return wid;
}
function Widget()
{
var state = 'no state';
var self = this;
var modifyState = function(newState)
{
state = newState;
}
this.getState = function()
{
return state;
}
this.getCallback = function()
{
delete self.getCallback;
return modifyState;
}
}
}
有沒有更好的方式來實現後,我還是這是一個相當合理的做法有何影響?我知道它是有效的,只是好奇,如果我正在陷入我應該意識到的任何陷阱。
的JavaScript編輯
widgetCallback
是JavaScript的,而不是阿達或C++或Java。你可以做什麼語言允許你,但你應該總是問自己,你是否爲了複雜起見而使它變得複雜。簡單的解決方案真的沒有什麼壞處。這是一種腳本語言,而不是軍事工具。 – entonio雖然我完全同意@entonio,在這裏,我沒有看到任何陷阱。這段代碼看起來不錯。 – mihsathe
@mihsathe這樣寫代碼會導致問題。它的作品,但它不是一個推薦的風格 – Raynos