json 使JavaScript code 更加OO

就个人理解JavaScript 既不是完全面向对象的,也不是完全的面向过程的,参半吧。
单纯的用JavaScript 写一个类估计都能会,伪装个java util类也没啥问题。

这个文章说的切入点是这样的:
JavaScript --> ajax --> some service --> 返回 到JavaScript 。

常见的返回数据的方式有:
1)返回数据由ajax框架来伪装成 JavaScript 类 ;
2)返回lang类型的 数据,直接编程JavaScript的弱类型数据来使用。

没有反对上面两种方式的意思,现在给出我自己的方式:
例:现在要返回这样一个结构的数据:

final class VO {
String strs[][] = {null,{"sdf",null},{"sdf","ggds"},{"wer","saw"}};

String name = "nameStr";
int age = 12;
String sysLoginID;
String password = "sdf";

}



要返回这个VO 的instance 的数据给 JavaScript ,我的做法比较折中,既不转换成伪类,也不返回简单的lang类型 ,
返回的一个字符串,格式如下:
{strs:[null,['sdf',null],['sdf','ggds'],['wer','saw']],name:'name',age:'12',sysLoginID:'',password:'sdf'}
(怎么转?,有写好的code ,Helper.toJSONString(Object obj) ,详见:Helper(http://chrnc.iteye.com/admin/blogs/269322)

现在看看 JavaScript 这边怎么来处理 :
testValue是传给 TestService 的 参数, TestService 是java 用伪装的 JavaScript类 。
现在将TestService 返回的 数据 ({strs:[null,['sdf',null],['sdf','ggds'],['wer','saw']],name:'name',age:'12',sysLoginID:'',password:'sdf'})
赋值给 curData
代码如下:



var curData = "";
DWREngine.setAsync(false);
var callbackProxy = function(serverRetValue) {new function(){curData=serverRetValue;}};
var callMeta = { callback:callbackProxy };
TestService.getTestJSONStr(testValue,callMeta);
DWREngine.setAsync(true);
var JSONObj = eval("("+curData+")"); //弄了变天就为了这句



JSONObj是 转换出来的 JavaScript 原声类型

JSONObj.name 你会得到 "nameStr"
JSONObj.sysLoginID 你会得到 null
JSONObj.strs[1][0] 你会得到 "sdf"

我见过一些兄弟,挺猛,就能把上面的VO连接成字符串后到前台的JavaScript中来拆分,取数据,但是,如果没了注释的话,以后谁能维护?看懂的成问题。
谨以此文送给我那还在拆分字符串的朋友们。


当然,在开发中我们不会去调用DWREngine去设置同步和异步的,转换JSON等动作也会放到 callback function 中去做,上面的写法只是理想状态的写法,只为转换JSON的逻辑看着更清晰连贯,现实中,如果后台动作很耗时的话,这么做了你会发现,你的在页面上,键盘和鼠标都不响应了,浏览器处于冻结状态.....我年轻时在开发时候这么写过,还教别人也这么用DWREngine,真是无知者无谓啊,不知现在他们和公司发现这些问题没...
完。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值