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 的解决方案应该得到充分考虑并优先采用。

猜你喜欢

转载自blog.csdn.net/Lyxxxxxx777/article/details/123098877