dojo把一个对象序列化成json时,如果对象中包含正则表达式,正则表达式会被转换为{},而不能转换为toString()形式,可以给dojo打个补丁,参看如下加粗代码:
/**
* dojo.toJson方法,增加正则表达式支持
*/
dojo.toJson = function(/*Object*/it, /*Boolean?*/ prettyPrint, /*String?*/ _indentStr){
if (it === undefined) {
return "undefined";
}
var objtype = typeof it;
if (objtype == "number" || objtype == "boolean") {
return it + "";
}
if (it === null) {
return "null";
}
if (it instanceof RegExp) {
return it.toString();
}
if (dojo.isString(it)) {
return dojo._escapeString(it);
}
var recurse = arguments.callee;
var newObj;
_indentStr = _indentStr || "";
var nextIndent = prettyPrint ? _indentStr + dojo.toJsonIndentStr : "";
var tf = it.__json__ || it.json;
if (dojo.isFunction(tf)) {
newObj = tf.call(it);
if (it !== newObj) {
return recurse(newObj, prettyPrint, nextIndent);
}
}
if (it.nodeType && it.cloneNode) {
throw new Error("Can't serialize DOM nodes");
}
var sep = prettyPrint ? " " : "";
var newLine = prettyPrint ? "\n" : "";
if (dojo.isArray(it)) {
var res = dojo.map(it, function(obj){
var val = recurse(obj, prettyPrint, nextIndent);
if (typeof val != "string") {
val = "undefined";
}
return newLine + nextIndent + val;
});
return "[" + res.join("," + sep) + newLine + _indentStr + "]";
}
if (objtype == "function") {
return null;
}
var output = [], key;
for (key in it) {
var keyStr, val;
if (typeof key == "number") {
keyStr = '"' + key + '"';
}
else
if (typeof key == "string") {
keyStr = dojo._escapeString(key);
}
else {
continue;
}
val = recurse(it[key], prettyPrint, nextIndent);
if (typeof val != "string") {
continue;
}
output.push(newLine + nextIndent + keyStr + ":" + sep + val);
}
return "{" + output.join("," + sep) + newLine + _indentStr + "}";
}
比如var a={reg:/a/}
dojo.toJson(a)会转换为"{reg:/a/}",而没改之前dojo会转换为"{reg:{}}"
欢迎光临我的独立博客
http://bwong.me
分享到:
相关推荐
dojo.js 1.4.2dojo.js 1.4.2dojo.js 1.4.2dojo.js 1.4.2dojo.js 1.4.2dojo.js 1.4.2dojo.js 1.4.2
dojo.js.uncompressed.js 1.4.2dojo.js.uncompressed.js 1.4.2dojo.js.uncompressed.js 1.4.2
10. **dojo.wba**:这个文件的扩展名不常见,可能是一种特殊的打包格式,可能包含了dojo库的完整构建,或者是特定版本的dojo环境。通常,dojo库的文件会有.js后缀,因此,这个文件可能需要特定的工具或环境才能解压...
**DOJO.js 框架详解** DOJO.js 是一个功能强大的JavaScript库,它被誉为“最优秀的js框架”之一,特别是在版本1.9.3中,这个称号得到了充分的体现。DOJO以其全面的特性、模块化的设计以及对各种浏览器的良好支持而...
此外,dojo.store抽象层使得与各种数据源(如JSON、RSS、Atom等)的交互变得更加简单。 5. **动画与视觉效果**:Dojo包含了一个强大的动画引擎,可以创建复杂的CSS3动画和基于时间轴的过渡效果。dojox.fx提供了一套...
dojo.xd.js 最新JavaScript框架组件!
dojo.js
【Dojo.GUI_v6.zip for pencil】是一款专为Pencil设计的GUI模板资源包,它扩展了Pencil这款优秀的Web原型设计工具的功能和视觉元素。Pencil是一个免费且开源的应用程序,允许用户创建各种交互式原型,适用于网页、...
dojo.js.uncompressed.js 1.92版
Dojo支持多语言和本地化,通过`dojo.i18n`模块,开发者可以轻松地为应用程序添加不同语言的支持。 9. **Dojo Build System** Dojo的构建系统允许开发者优化和打包代码,合并多个模块为单个文件,减少HTTP请求,...
- AJAX通信:Dojo的IO模块支持异步数据请求,如`dojo.io.*`,便于与服务器进行数据交互。 - UI组件:`dojo.widget.*`包含了多种可复用的UI组件,如按钮、表单元素等,方便快速构建用户界面。 - 动画效果:Dojo的动画...
domino xapges 其中的dojo.xhrGet 和 dojo.xhrPost例子
dojo.js.核心jsDojo.js核心dojo的javaScript类库Dojo.js核心dojo的javaScript类库Dojo.js核心dojo的javaScript类库Dojo.js核心dojo的javaScript类库
Dojo支持模块化开发,拥有强大的DOM操作、事件处理、AJAX调用、动画效果以及多种UI控件等功能。它还提供了一个强大的数据网格组件,可以轻松地处理大量数据,并具有高度可定制性。 ### 二、AJAX技术与Dojo的关系 ...
难得纯净资源,不用下载其他乱起八糟的东西了
虽然基本的xhr方法不支持文件上传,但Dojo提供了一个`dojo.form`模块,可以处理表单数据并实现文件上传。 7. **跨域请求** Dojo的AJAX功能支持跨域请求,通过设置`preventCache`、`withCredentials`等选项,可以...
例如,它包含了一个名为`dojo.fromJson()`的函数,可以将JSON字符串转换为JavaScript对象,以及`dojo.toJson()`函数,可以将JavaScript对象转换为JSON字符串。这些工具使得在JavaScript和服务器之间交换JSON数据变得...
Dojo学习笔记-- dojo.event & dojo.event.topic & dojo.event.browser Dojo学习笔记--DateTextbox Dojo学习笔记--Dojo的基础对象和方法 Dojo学习笔记--FisheyeList鱼眼效果 Dojo学习笔记--TabContainer Dojo...
Dojo学习笔记-- dojo.event & dojo.event.topic & dojo.event.browser Dojo学习笔记--DateTextbox Dojo学习笔记--Dojo的基础对象和方法 Dojo学习笔记--FisheyeList鱼眼效果 Dojo学习笔记--TabContainer Dojo...
dojo.fx模块提供了诸如fadeIn、fadeOut、slideTo等动画效果,同时,dojo.fx.combine和dojo.fx.chain可以将多个动画组合在一起,实现复杂的动画序列。 Dojo还提供了强大的事件处理机制。dojo.connect允许开发者订阅...