【问题】当一个对象中含有function,而想把它去掉的时候,怎么做简单呢?
【举例】
举个例子,当有一个对象为:
var o = {
a: 1,
b: 'xx',
c: function(){},
d: true
}
我想把类型为o.c的对象去掉,应该怎么做呢~~
【解决方案】
一般的想法使用for-in循环,去掉type为function来做。其实有更简单的方法,那就是使用JSON.stringify(o),这样可以直接去掉function,再使用JSON.parse()将对象转换回来就好了,实例代码如下:
JSON.parse(JSON.stringify(o))
结果,大家可以自己试试。
【深入学习】
JSON对象:
对象检测:if(!window.JSON)
浏览器支持:IE:>=ie8标准模式支持,混杂模式和<ie8浏览器中不支持,主流现代浏览器支持
方法:
1、JSON.stringify(value[, replacer,space])
@param {Object | Array} value 必须,要转换的 JavaScript 值(通常为对象或数组)。
@param {Function} replacer 可选,用于转换结果的函数或数组
@param {String | Number} space 可选,向返回值 JSON 文本添加缩进、空格和换行符以使其更易于读取
说明:
如果 value 具有 toJSON 方法,则 JSON.stringify 函数将使用该方法的返回值。
如果 toJSON 方法的返回值为 undefined,则不转换成员。
这使对象能够确定自己的 J SON 表示形式。
将不会转换不具有 JSON 表示形式的值,例如 undefined。 在对象中,将丢弃这些值。 在数组中,会将这些值替换为 null。
执行顺序:
在序列化过程中,如果 value 参数对应有 toJSON 方法,则 JSON.stringify 将首先调用 toJSON 方法。
如果该方法不存在,则使用原始值。
接下来,如果提供 replacer 参数,则该值(原始值或 toJSON 返回值)将替换为 replacer 参数的返回值。
最后,根据可选 space 参数向该值添加空格以生成最终的 JS ON 文本。
2、JSON.parse(text[, receiver ])
@param {String} text jsonString
@param {Function} receiver 可选。 一个转换结果的函数。
将为对象的每个成员调用此函数。 如果成员包含嵌套对象,则先于父对象转换嵌套对象。
对于每个成员,会发 生以下情况:
如果 reviver 返回一个有效值,则成员值将替换为转换后的值。
如果 reviver 返回它接收的相同值,则不修改成员值。
如果 reviver 返回 null 或 undefined,则删除成员。
不支持的替代方案:
1、window.eval方法对jsonString进行解析,也就是代替json.parse方法
2、使用json2.js来进行转化
【参考资料】
http://msdn.microsoft.com/zh-cn/library/cc836458(v=vs.94).aspx
http://msdn.microsoft.com/zh-cn/library/cc836459(v=vs.94).aspx
http://msdn.microsoft.com/zh-cn/library/cc836466(v=vs.94).aspx
分享到:
相关推荐
jQuery 1.2 中,您可以跨域加载 JSON 数据,使用时需将数据类型设置为 JSONP。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。数据类型设置为 "jsonp" 时...
//遍历json对象中的每个属性还有属性对应的目标值 for (var attr in json) { //判断这个属性attr中是不是opacity if (attr == "opacity") { //获取元素的当前的透明度,当前的透明度放大100倍 var current = ...
在jQuery 1.2版本中,如果你指明了一个JSONP回调函数,你就可以从其它的域中载入JSON类型的数据,写法类似于 "myurl?callback=?" 。jQuery会自动调用正确的方法名称来代替查询字符串,执行你指定的回调函数。...
JSON.stringify是浏览器高版本带的一个将JS的Objtect对象转换为JSON字符串的一...1.undefined,该类型使用JSON.stringify处理的时候,如果对象就是undefined,将会输出”undefined”,如果对象是数组的元素,那么将会变成
9.5.7 Function对象 9.5.8 再论关键字with 9.6 应知应会 练习 第10章 浏览器对象模型:BOM 10.1 JavaScript及浏览器对象模型 10.1.1 navigator对象的使用 10.1.2 window对象的...
$("div#intro .head") id="intro" 的 <div> 元素中的所有 class="head" 的元素 三. jQuery 事件函数 jQuery 事件处理方法是 jQuery 中的核心函数。 事件处理程序指的是当 HTML 中发生某些事件时所调用的方法。术语...
{2.8}框架中移动的小球}{59}{section.2.8} {2.9}抽象与接口}{59}{section.2.9} {2.10}访问控制}{60}{section.2.10} {2.10.1}类的属性}{60}{subsection.2.10.1} {2.10.2}类的方法}{61}{subsection.2.10.2} {...
延迟对象 延迟对象(Deferred Object,jQuery.Deferred对象)是一个可链接的(chainable)实用工具对象,实现了Promise接口,可以在回调队列中注册多个回调、调用回调队列并转发任何同步/异步函数的成败状态。...
4.3.3 ext.function中的静态方法 / 120 4.3.4 ext.array中的静态方法 / 127 4.3.5 ext.error中的静态方法 / 133 4.4 深入了解类的创建及管理 / 135 4.4.1 开始创建类 / 135 4.4.2 创建类的类:ext.class / 137...
Douglas Crockford 在本书中剥开了JavaScript 沾污的外衣,抽离出一个具有更好可靠性、可读性和可维护性的JavaScript 子集,让你看到一门优雅的、轻量级的和非常富有表现力的语言。作者从语法、对象、函数、继承、...
6.9 Ext.util.JSON编码和解码Json对象 6.9.1 decode() 6.9.2 encode() 6.10 Ext.util.MixedCollection 6.10.1 向集合加入对象 6.10.2 将数组中的对象加入到集合中 6.10.3 移除集合中的对象 6.10.4 克隆...
//this返回 原生的ID=data_box的对象,$(this)就是jQuery的元素对象,也就是 $('#data_box') //取决于后台返回的类型做相应的处理 if(a.total == 0) { $(this).html('没有数据...</p>'); } else { var...
《精通JS脚本之ExtJS框架》由浅入深地讲解了ExtJS在Web开发中的相关技术。本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计...
《精通JS脚本之ExtJS框架》由浅入深地讲解了ExtJS在Web开发中的相关技术。本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计...
*data : json 选择的数据(json格式) *bool : true/false data数据如果要分离成两个 值为true *config : 配置data的内部对象(type在bool为true的时候生效) { id : 数据字段, name : 数据名称, alias : 数据名称...
Object、Array和Function则属于引用类型,String有些特殊 本文主要给大家介绍了关于js类型相关的常用操作,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 JS数组,字符串,json互相转换 JS数组...
7.9.4. 在响应对象中测试异常 7.9.5. 子类化响应对象 7.10. 插件 7.10.1. 简介 7.10.2. 编写插件 7.10.3. 使用插件 7.10.4. 获取和控制插件 7.10.5. 包含在标准发行包中的插件 7.10.5.1. 动作堆栈 7.10.5.2...