你可以创造中还包含一个反向引用原名称的包装对象。
function MyApiClient()
{
var _self = this;
this.RegisterWrapper = function(strName, objValue, explicitName)
{
var newName = (explicitName != null) ? explicitName : '_' + strName.replace(/\W/g, '');
_self[newName] = {ApiName : strName, Value : objValue};
return _self[newName];
}
}
//implementation
var client = new MyApiClient();
client.RegisterWrapper('5story', [0,1,2,3,4,5]);
console.log(client._5story.Value); //output: Array() [0,1,2,3,4,5];
//or
var o = client.RegisterWrapper('5story', {a:'b'}, '_myName');
console.log(o.Value); //outpus Object a: 'b'
console.log(client._myName.Value); //outpus Object a: 'b'
这扩展了几个额外的好处
- 范围:创建它们将被封装的新对象,而不是全局
- 时参考:如果你有参考这个对象 - 你可以用它来打你的API(因为它会包含旧名称)
- 灵活性:你可以在解析从api返回的字符串或者像上面那样明确地通过循环动态注册包装。
您是否还有关于实际api的更多信息?
用户的preg_replace和删除号码? – Steven 2009-12-15 01:00:20