`
why_rj
  • 浏览: 25851 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

JS中,eval, new Function, native处理JSON的性能比较

阅读更多

JSON作为JS中一种数据格式,应用非常广泛,在JS中,处理JSON的方法有三种,下面分别介绍这三种方式的使用方法及这三种方法的性能比较。

 

var jsonString;

 

一、eval 方式:

 

var str = eval('('+ jsonString +')');

1、为什么要加括号?

加上圆括号的目的是迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式(jsonString)转化为对象,而不是作为语句(statement)来执行。
例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。

2、JSON格式的名字部分为什么要加引号?

因为eval函数会将{foo:”bar”}解释成合法的JavaScript语句,而非表达式。但是人们往往想要的是让eval将这段代码解释成一个对象。所以JSON格式会强制你去在名字的外侧加上引号再结合圆括号,这样eval就不会错误的将JSON解释成代码块。



 

二、new Function() 方式:

var str = new Function( "return " + jsonString )();

此刻用alert(str);得到的是一些 "[Object : Object]".若要看其中的值,则可以去掉Function后的"()",
即:var str = new Function( "return " + jsonString );

 

 

三、native

if ( typeof JSON !== "undefined" ) {

     var str = JSON.parse( jsonString ); 
}

 

性能比较的结论:

1、在IE6、IE7中选择 eval

2、在IE8中选择 native JSON

3、在Firefox2,3 中选择 new Function

4、在 Safri4中选择 eval

5、当选择其它浏览器时,eval 和 new Function 的性能一致。

 

 

 

分享到:
评论

相关推荐

    巧用eval解析json对象

    本篇将聚焦于如何巧妙地使用`eval`函数来解析JSON对象,虽然在实际开发中,由于安全考虑我们通常会避免使用`eval`,但理解其工作原理对于学习JavaScript和JSON解析至关重要。 首先,JSON对象本质上是符合JSON语法的...

    java实现js中eval功能

    在JavaScript中,`eval()`函数是一个非常特殊且强大的工具,它能够将字符串作为JavaScript代码执行。这个功能在处理动态生成的代码或者解析JSON时非常有用。然而,由于安全和性能问题,`eval()`通常被避免在生产环境...

    JavaScript 中处理JSON

    ### JavaScript 中处理 JSON 在现代 Web 开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但作为一种独立的...

    javascript eval和JSON

    ### JavaScript中的`eval`函数与JSON的理解与应用 #### `eval`函数的工作原理及应用场景 在JavaScript编程语言中,`eval`是一个全局函数,它的主要功能是接收一个字符串参数,该字符串应该包含有效的JavaScript...

    在Javascript中Eval函数的使用?

    如果需要动态执行代码,考虑使用`new Function()`或`Function`构造函数,或者利用`setTimeout`和`setInterval`的回调函数,这些方法相对更安全,性能也更好。 在实际开发中,`eval()`的一个常见用途是在JSON解析中...

    js使用eval解析json(js中使用json)

    JavaScript中的`eval()`函数是一个非常强大的工具,但同时也伴随着安全风险和性能问题。它主要用于将字符串作为JavaScript代码执行。在处理JSON数据时,`eval()`曾经被广泛用于将JSON字符串转化为JavaScript对象,...

    js下用eval生成JSON对象.docx

    总的来说,虽然`eval()`和`new Function()`在某些场景下能快速解析JSON,但为了代码的安全性和性能考虑,推荐使用`JSON.parse()`。在实际开发中,应当遵循最佳实践,避免使用可能导致安全问题的`eval()`。

    javascript中eval解析JSON字符串.docx

    ### JavaScript中eval解析JSON字符串详解 #### 一、前言 在JavaScript开发中,解析JSON字符串是一项常见的任务。其中一种方法是使用`eval()`函数。虽然这种方法并不推荐,但了解其工作原理及其潜在风险仍然非常...

    在Javascript中Eval函数的使用.doc

    在JavaScript中,`eval()`函数是一个极具争议但又非常有用的工具。它允许我们将字符串作为JavaScript代码来执行,这在某些特定场景下提供了极大的灵活性。然而,这种灵活性也带来了安全风险和性能问题,因此在实际...

    javascript 自定义eval函数实现

    JavaScript中的`eval()`函数是一个非常强大但又颇具争议的功能,它允许执行一个字符串作为JavaScript代码。在本讨论中,我们将深入探讨如何自定义`eval()`函数以提高代码的安全性和效率,同时也会涉及到JavaScript的...

    关于eval 与new Function 到底该选哪个?

    在JavaScript编程中,`eval` 和 `new Function` 都被用来执行字符串化的JavaScript代码,但它们之间存在着一些重要的区别和使用场景上的考量。本文将深入探讨这两个函数的特性和性能差异,帮助开发者做出明智的选择...

    为什么JS中eval处理JSON数据要加括号

    总结一下,JS中eval处理JSON数据要加括号的原因是为了确保`eval()`将JSON字符串解析为表达式,从而创建JavaScript对象。然而,为了代码的安全性和性能,推荐使用`JSON.parse()`替代`eval()`来处理JSON数据。

    JSON2.JS JSON.JS JSON_PARSE.JS

    json2.js: This file creates a JSON property in the global object, if there isn't already one, setting its value to an object containing a stringify method and a parse method. The parse method uses ...

    JSON资源包,有JS和JAVA包

    3. `json_parse_state.js`、`json_parse.js`、`json_sans_eval.js`:这些可能是JSON解析器的不同实现,可能包含了一些特殊处理或者优化。比如`json_sans_eval.js`很可能是一个避免使用`eval()`的JSON解析器,以确保...

    Ajax中使用JSON传输数据

    `json.js`文件可能是JavaScript中处理JSON的一个工具库,它提供了类似的功能,但用在客户端,帮助解析服务器返回的JSON字符串。例如,`eval()`或`JSON.parse()`函数可以用来解析JSON字符串为JavaScript对象: ```...

    JavaScript Eval 在线加密/解密工具 v0.1

    专门解码解密eval(function(p,a,c,k,e,r){})、eval(function(p,a,c,k,e,d)...{})等多种eval编码加密的Javascript源代码.暂不支持语法高亮.不支持低版本IE.P.S:该程序是仿制的,非原创!

    javascript中eval解析JSON字符串

    在JavaScript编程中,eval函数是一个非常强大的内置函数,它能够将字符串作为JavaScript代码执行。虽然eval函数非常强大,但同时它也存在安全风险和潜在的性能问题。由于eval可以执行任何JavaScript代码,因此如果...

    字符串转换成json 的三种方式

    在JavaScript编程中,将字符串转换为JSON对象是一个常见的任务,特别是在处理服务器与客户端之间的数据交换时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,但...

    json------javascript eval()以及Example

    总的来说,理解JSON和`eval()`的关系,以及如何在JavaScript和Java中安全地处理JSON数据,是现代Web开发中的基本技能。同时,熟悉像Struts2这样的框架如何处理JSON响应,有助于构建更高效、更安全的Web应用。

    eval(function(p,a,c,k,e,d)解码工具

    解码 eval(function(p,a,c,k,e,d){e=function(c){return(c(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};

Global site tag (gtag.js) - Google Analytics