`
wfsheep
  • 浏览: 15808 次
文章分类
社区版块
存档分类
最新评论

怎么去掉对象中的function类型元素--JSON对象学习

阅读更多

【问题】当一个对象中含有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电子文档chm

    jQuery 1.2 中,您可以跨域加载 JSON 数据,使用时需将数据类型设置为 JSONP。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。数据类型设置为 "jsonp" 时...

    animate.js

    //遍历json对象中的每个属性还有属性对应的目标值 for (var attr in json) { //判断这个属性attr中是不是opacity if (attr == "opacity") { //获取元素的当前的透明度,当前的透明度放大100倍 var current = ...

    jquery-1.1.3 效率提高800%

    在jQuery 1.2版本中,如果你指明了一个JSONP回调函数,你就可以从其它的域中载入JSON类型的数据,写法类似于 "myurl?callback=?" 。jQuery会自动调用正确的方法名称来代替查询字符串,执行你指定的回调函数。...

    JS实现JSON.stringify的实例代码讲解

    JSON.stringify是浏览器高版本带的一个将JS的Objtect对象转换为JSON字符串的一...1.undefined,该类型使用JSON.stringify处理的时候,如果对象就是undefined,将会输出”undefined”,如果对象是数组的元素,那么将会变成

    JavaScript详解(第2版)

     9.5.7 Function对象   9.5.8 再论关键字with   9.6 应知应会   练习   第10章 浏览器对象模型:BOM   10.1 JavaScript及浏览器对象模型   10.1.1 navigator对象的使用   10.1.2 window对象的...

    jQuery详细教程

    $("div#intro .head") id="intro" 的 &lt;div&gt; 元素中的所有 class="head" 的元素 三. jQuery 事件函数 jQuery 事件处理方法是 jQuery 中的核心函数。 事件处理程序指的是当 HTML 中发生某些事件时所调用的方法。术语...

    Java学习笔记-个人整理的

    {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} {...

    jquery插件使用方法大全

    延迟对象 延迟对象(Deferred Object,jQuery.Deferred对象)是一个可链接的(chainable)实用工具对象,实现了Promise接口,可以在回调队列中注册多个回调、调用回调队列并转发任何同步/异步函数的成败状态。...

    Ext Js权威指南(.zip.001

    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...

    《JavaScript语言精粹[修订版]》高清版_2012.09_【蝴蝶书】_172页完整版

    Douglas Crockford 在本书中剥开了JavaScript 沾污的外衣,抽离出一个具有更好可靠性、可读性和可维护性的JavaScript 子集,让你看到一门优雅的、轻量级的和非常富有表现力的语言。作者从语法、对象、函数、继承、...

    ExtJSWeb应用程序开发指南(第2版)

    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 克隆...

    手机端快滑到底部时,自动加载ajax请求下一页

    //this返回 原生的ID=data_box的对象,$(this)就是jQuery的元素对象,也就是 $('#data_box') //取决于后台返回的类型做相应的处理 if(a.total == 0) { $(this).html('没有数据...&lt;/p&gt;'); } else { var...

    精通JS脚本之ExtJS框架.part2.rar

    《精通JS脚本之ExtJS框架》由浅入深地讲解了ExtJS在Web开发中的相关技术。本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计...

    精通JS脚本之ExtJS框架.part1.rar

    《精通JS脚本之ExtJS框架》由浅入深地讲解了ExtJS在Web开发中的相关技术。本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计...

    一个不错的仿携程自定义数据下拉选择select

    *data : json 选择的数据(json格式) *bool : true/false data数据如果要分离成两个 值为true *config : 配置data的内部对象(type在bool为true的时候生效) { id : 数据字段, name : 数据名称, alias : 数据名称...

    JavaScript类型相关的常用操作总结

    Object、Array和Function则属于引用类型,String有些特殊 本文主要给大家介绍了关于js类型相关的常用操作,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 JS数组,字符串,json互相转换 JS数组...

    ZendFramework中文文档

    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...

Global site tag (gtag.js) - Google Analytics