<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title></title> </head> <body> <script> var f = new Function('x', 'y', 'return x + y;');// 等价于var f = function(x, y) {return x + y;} console.log(f(1, 1)); var str = '{"id": "108"}'; console.log((new Function('return ' + str))());// 字符串转对象 f = new function() { return 'ca'; }; console.log(f); // 相当于 /*function 匿名类() { return 'ca'; } f = new 匿名类(); console.log(f);*/ f = new function() { return new String('ca'); }; console.log(f); // 只要 new 表达式之后的 constructor 返回(return)一个引用对象(数组,对象,函数等),都将覆盖new创建的匿名对象,如果返回(return)一个原始类型(无 return 时其实为 return 原始类型 undefined),那么就返回 new 创建的匿名对象 </script> </body> </html>
《JavaScript权威指南》
详解new function(){}和function(){}()
http://www.planabc.net/2008/02/20/javascript_new_function/