我有一个创建 Widget 对象的工厂类。Factory 对象需要稍后回调 Widget 对象的“私有方法”,以向其传递一些 ajax 信息。到目前为止,我想出的唯一实现是在 Widget 中创建一个公共方法,将私有方法返回给工厂,然后删除自己,然后工厂返回新的 Widget,同时保留指向私有方法的指针. 这是一个简化的示例:
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;
}
}
}
有没有更好的方法来达到我想要的效果,或者这是一个相当合理的方法?我知道它有效,只是好奇我是否正在踏入我应该注意的任何陷阱。