怎么去掉对象中的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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值