uneval()和.toSource()之间有什么区别

时间:2013-12-27 14:02:21

标签: javascript

uneval(...)和.toSource()有什么区别?

  

toSource()方法返回表示对象源代码的字符串。

     

uneval()方法创建Object的源代码的字符串表示。

3 个答案:

答案 0 :(得分:1)

一个人需要一个参数,另一个则没有。这似乎是唯一的区别,尽管不鼓励使用两者。

uneval(object);

Object.toSource();
obj.toSource();

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/uneval https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toSource

直接来自上述网站:
非标
“这个功能是非标准的,不在标准轨道上。不要在面向Web的生产站点上使用它:它不适用于每个用户。实现之间可能存在很大的不兼容性,并且行为可能在将来发生变化。“

我会远离这个功能。可能有更好的方法来完成你想要做的事情。

答案 1 :(得分:0)

uneval()是一种可以将一段javascript传递给的方法 .toSource()是对象的扩展方法。

两个函数输出的结果与以下示例相同:

var a = 1234;
console.log(uneval(a)); //outputs "1234"
console.log(a.toSource()); //outputs "1234"

答案 2 :(得分:0)

请注意:toSourceuneval都是专有的非标准功能。

虽然uneval是函数,即独立于主题的window方法,但toSource被实现为主题的方法。因此,在使用toSource时需要进行其他错误处理。另一方面,uneval能够处理未使用实际对象初始化的变量。

for(let v of [null, undefined])
{
  console.log(uneval(v));

  try
  {
    console.log(v.toSource());
  }
  catch(e)
  {
    console.log(e.message);
  }
}