JavaScript uneval 函数有什么作用?
JavaScript what does the uneval function do?
NOTE: I do realize that there's currently low browser support for the
uneval
function, however I am in interest to know what it does, and how it works.
我知道 eval()
将 javascript 代码作为字符串执行,但 uneval()
对我来说似乎很奇怪。它似乎 unevaluates 代码,从其用途之一判断,deep 对象克隆。 例如:
let myObject = { nonsense: null };
var newObject = eval( uneval(myObject) );
// The above example deeply clones myObject in Mozilla Firefox
但是魔法是如何发挥作用的呢? uneval
做什么,允许这样的用途?更重要的是,其他用途是什么?因为它无缝 unevaluate evaluated 内容; 真正的考验是,它能 unevaluate 其他任何东西吗 除了通过 eval()
函数传递的内容(或者在这种特殊情况下,反之亦然)?
uneval
函数returns给定对象的来源;而 eval
函数通过评估该源代码来执行相反的操作。 这样想,你得到了一个对象的源,然后你评估源得到相同的对象,只是在不同的内存区域。这是一个 link 妈妈文档中的一个很好的资源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/uneval,如评论中所述。
NOTE: I do realize that there's currently low browser support for the
uneval
function, however I am in interest to know what it does, and how it works.
我知道 eval()
将 javascript 代码作为字符串执行,但 uneval()
对我来说似乎很奇怪。它似乎 unevaluates 代码,从其用途之一判断,deep 对象克隆。 例如:
let myObject = { nonsense: null };
var newObject = eval( uneval(myObject) );
// The above example deeply clones myObject in Mozilla Firefox
但是魔法是如何发挥作用的呢? uneval
做什么,允许这样的用途?更重要的是,其他用途是什么?因为它无缝 unevaluate evaluated 内容; 真正的考验是,它能 unevaluate 其他任何东西吗 除了通过 eval()
函数传递的内容(或者在这种特殊情况下,反之亦然)?
uneval
函数returns给定对象的来源;而 eval
函数通过评估该源代码来执行相反的操作。 这样想,你得到了一个对象的源,然后你评估源得到相同的对象,只是在不同的内存区域。这是一个 link 妈妈文档中的一个很好的资源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/uneval,如评论中所述。