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

时间: 2024-10-12 06:14:37

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

转载自chaos_JS 的JavaScript中的Function类型浅析

1. Function类型是js中引用类型之一,每个函数实际上都是Function类型的实例对象,具有自己的属性和方法.正因为函数式对象,所以函数名实际上也是一个指向函数对象的指针. 2. 常用的函数定义方式 1. 函数声明: function sum(a , b ){ return a+b; } 2. 表达式: var sum = function(){ return a+b; }; //注意分号 //两种方式的区别: //解释器会率先读取函数声明,并使其在执行之前可以访问,而使用表达式则必须

JavaScript中的Function类型浅析

1. Function类型是js中引用类型之一,每个函数实际上都是Function类型的实例对象,具有自己的属性和方法.正因为函数式对象,所以函数名实际上也是一个指向函数对象的指针. 2. 常用的函数定义方式 1. 函数声明: function sum(a , b ){ return a+b; } 2. 表达式: var sum = function(){ return a+b; }; //注意分号 //两种方式的区别: //解释器会率先读取函数声明,并使其在执行之前可以访问,而使用表达式则必须

JavaScript中两种类型的全局对象/函数(转)

转自:http://www.cnblogs.com/snandy/archive/2011/03/19/1988626.html 这里所说的JavaScript指浏览器环境中的包括宿主环境在内的.第一种是ECMAScript Global Object,第二种是宿主环境(Host)下的全局对象/函数. 一.核心JavaScript内置对象,即ECMAScript实现提供的不依赖于宿主环境的对象 这些对象在程序执行之前就已经(实例化)存在了.ECMAScript称为The Global Objec

怎么去掉Xcodeproject中的某种类型的警告 Implicit conversion loses integer precision: &amp;#39;NSInteger&amp;#39; (aka &amp;#39;long&amp;#39;) to &amp;#39;int32

问题描写叙述 在我们的项目中,通常使用了大量的第三方代码,这些代码可能非常复杂,我们不敢修改他们,但是作者已经停止更新了,当sdk升级或者是编译器升级后,这些遗留的代码可能会出现许很多多的警告,那么我们有没有办法去掉这些烦人的警告,不然一个project几百个警告,你看着怎么都不爽吧.我们怎么去掉警告呢 1.最直接,最一劳永逸,最安全的方式,直接找到警告的那段代码,改为不警告.这个方式,最安全. 但是它有一个问题,就是,当我们非常多文件都有这样的类型的警告的时候,我们就须要修改非常多非常多的源代

javascript中字符串格式转化成json对象记录

什么是JSON JSON(JavaScript Object Notation)是一种优美的JavaScript对象创建方法.JSON也是一种轻量级数据交换格式.JSON非常易于人阅读与编写,同时利于机器解析与生成.JSON是在AJAX中代替XML交换数据的更佳方案. JSON格式与语法 var jsonobject= {         //对象内的属性语法(属性名与属性值是成对出现的)         propertyname:value, //对象内的函数语法(函数名与函数内容是成对出现的

JavaScript中的Function(函数)对象

1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value) 6.一个小写转大

JavaScript中的Function类型

函数实际上是对象,每个函数都是Function类型的实例,定义Function函数的方式如下: 1 //第一种:函数声明 2 function sum(num1,num2){ 3 return num1 + num2; 4 } 5 6 //第二种:函数表达式 7 var sum = function(num1,num2){ 8 return num1 + num2; 9 } 10 11 //第三种:Function构造函数 12 var sum = new Function("num1"

java 利用反射修改对象中的list类型字段中的值。

这两天没事学习下了反射.通过反射我们可以修改对象中的字段的值. 就如下面这段代码 Grade grade=new Grade(); Field f=Grade.class.getDeclaredField("name"); f.setAccessible(true); f.set(grade, "三年级一班"); 这是so easy的,这时我想到了要是list类型的字段该怎么通过反射修改呢. 于是我就尝试了下,最终做了出来. 先准备两个类. public class

JavaScript中两种类型的全局对象/函数

这里所说的JavaScript指浏览器环境中的包括宿主环境在内的. 第一种是ECMAScript Global Object,第二种是宿主环境(Host)下的全局对象/函数. 一.核心JavaScript内置对象,即ECMAScript实现提供的不依赖于宿主环境的对象 这些对象在程序执行之前就已经(实例化)存在了.ECMAScript称为The Global Object,分为以下几种 1, 值属性的全局对象(Value Properties of the Global Object).有NaN