字符串转对象

目的

  • 工作中如果需要原生 JS 完成字符转对象的话可以通过 JSON.parse(str), 但是这个方法是ES5中才出现, 如果需要兼容低版本就需要其它方法
  • 使用原生 JS 解决字符串转对象, 让我们更加容易处理

实现方法

    // 得到 对象 格式或  json 格式的一个字符串
var str = '{"name":"张根硕","age":"18"}';
  1. 使用 ES5 中的方法 JSON.parse()
    var first = JSON.parse(str);

ES5 中新添加的方法,将 json 格式字符串转换为对象

  1. 使用 new Function 方法
    var second = (new Function('return '+ str +';'))();
var second = new Function('return '+ str +';')();

使用函数的构造函数方法(传参只能传字符串), 自调用(或者执行), 得到对象

  1. 使用 eval() 方法
    var third = eval('('+ str +')');

使用eval()方法, 传入字符串需要给字符串添加 "()" 进行包裹

如果不使用 '()' 进行包裹,浏览器会将 ':' 解析成代码块,最终会得到 ':' 后的结果**

'{"name" : "张全蛋"}' 最后会的到 '张全蛋' , 而 name 不显示

  1. 使用 eval() 和 (function(){})() 方法
    var forth = eval('(function(){return '+ str +';})()');

使用 eval() 方法, 将函数自调用, 得到对象

使用原生JS进行字符串转对象的更多相关文章

  1. JS json字符串转对象、对象转字符串

    JSON是javascript原生格式,在JavaScript中处理json数据不需要任何特殊的API或者工具包. JSON中,有两种结构:对象和数组. 在数据传输流中,json是以文本,即字符串的形 ...

  2. js jq 字符串数组对象

    数组是有序的,对象是无序,数组是特殊的对象 数组 声明数组 var arr=new Array('red','blue','yellow'); //["red", "bl ...

  3. 原生JS实现字符串分割

    window.onload = function(){ var str = 'abc,dbc,qqq,aaa'; var sp = split(str,',')//与字符串的分隔符要一直. alert ...

  4. 原生JS操作object HTMLTableSectionElement 对象,获取行数

    html页面 <tbody id="infoTab"> <tr class="fomat"> <td class="bl ...

  5. 模板字符串原理,原生js实现字符串模板

    在使用模板字符串的时候使用的是 '{{}}'形式进行书写,本文则向各位解密这么写的原因 初体验正则 首先要先明白正则表达式中exec的使用 例如: let str = 'axu1997@qq.com' ...

  6. 原生js反转字符串

    //直接操作 var str='nama';var rts=str.split('').reverse().join(''); //String上拓展方法String.prototype.revers ...

  7. 如何用原生js替换字符串中的某个字符(或字符串)为指定的字符串?

    <html> <head><title>我的第一个 HTML 页面</title></head><script type=" ...

  8. 玩转图片上传————原生js XMLHttpRequest 结合FormData对象实现的图片上传

    var form=document.getElementById("formId"); var formData=new FormData(form); var oReq = ne ...

  9. 原生js获取宽高与jquery获取宽高的方法的关系

    说明:1.因为获取高度的情况跟获取宽度的情况一样,所以以下只说获取宽度的情况.  2.以下所说的所有方法与属性所返回的值都是不带单位的.  3.为了方便说明,以下情况采用缩写表示:  obj -> ...

随机推荐

  1. mavne问题解决---Dynamic Web Module 2.3 or newer

    一:前沿 maven问题的bug,其实是很烦人的,因为每次都是很纠结的去改这个bug,特别的烦人,这个bug也是使得我纠结了好久的,那个星期五自己搞了几个小时都没有解决下,之后星期一来百度Google ...

  2. 前端导出文件功能document.execCommand命令

    参照 http://blog.csdn.net/woshinia/article/details/18664903

  3. 【BZOJ】1827: [Usaco2010 Mar]gather 奶牛大集会

    [算法]树型DP||树的重心(贪心) [题解] 两遍DFS,第一次得到所有节点子树的路径和,第二次给出除了该子树外其它部分的路径和,时时计算答案. long long!!! #include<c ...

  4. 之江学院第0届校赛 qwb与支教 (容斥公式)

    description qwb同时也是是之江学院的志愿者,暑期要前往周边地区支教,为了提高小学生的数学水平.她把小学生排成一排,从左至右从1开始依次往上报数. 玩完一轮后,他发现这个游戏太简单了.于是 ...

  5. python脚本运行的几种方式

    1.脚本式编程 将如下代码拷贝至 hello.py文件中: print ("Hello, Python!"); 通过以下命令执行该脚本: $ python ./hello.py h ...

  6. Linux的yum命令——(八)

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载 ...

  7. Linux 通过ssh传输文件

    一.scp是什么? scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响 ...

  8. 嵌入式上 iscsi实现

    前言 去年公司设备(haisi3516)上需要提供iscsi的功能,于是花了几天时间探究了下.linux内核(2.6.xx)支持iscsi,只是我发现当时我们设备的内核编译时没有选上,于是重新编译了内 ...

  9. 性能测试===Locust介绍

    简述性能测试 提起性能测试,可能移动APP的从业人员会感觉比较混淆,因为在客户端(Android.iOS)中也有性能测试专项,主要涉及的是APP的启动时间.内存.包大小.帧率,流量等客户端相关的指标. ...

  10. Page.Response.Buffer与Response.Redirect一起用报错“无法在发送 HTTP 标头之后进行重定向”

    Page.Response.Buffer与Response.Redirect一起用报错“无法在发送 HTTP 标头之后进行重定向” 原因还未知..