JS单行对象字符串转对象

	var strObj0 = '{banana : "pear"}';
	var strObj1 = "{mango : \"strawberry\"}";
	    
	var apple = "a=" + strObj0;
	var peach = "b=" + strObj1;
	
	var grape = eval(apple);
	var durian = eval(peach);
	
	console.log(grape);
	console.log(durian);

当收到一些奇怪的后端发来的数据,比如收到的数据在JSON.stringify或JSON.parse转换后得到 '{banana : "pear"}'或者"{mango : \"strawberry\"}"这样的的数据,即被引号包裹的对象,输出到控制台显示的就是一串字符串,而我们要用这个字符串中的对象则会取不到相应的值。

eval()

给字符串前面拼接"a=",然后eval()中传入新的字符串,例如这样:console.log(eval("a=" + str)),不过eval()这个函数一般不提倡使用,它有很多缺点,另行百度。

附上一段eval()的缺点描述:eval 存在安全问题,它会执行任意传给它的代码, 在代码字符串未知或者是来自一个不信任的源时,绝对不要使用 eval 函数。
绝对不要使用 eval,任何使用它的代码都会在它的工作方式,性能和安全性方面受到质疑。 如果一些情况必须使用到 eval 才能正常工作,首先它的设计会受到质疑,这不应该是首选的解决方案, 一个更好的不使用 eval 的解决方案应该得到充分考虑并优先采用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值