`
deng131
  • 浏览: 672568 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

new function(){},Function,new Function()区别

阅读更多
函数是JavaScript中很重要的一个语言元素,并且提供了一个function关键字和内置对象Function,下面是用法和它们之间区别。

使用方法一:
var foo01 = function() //or fun01 = function()
{
     var temp = 100;
     this.temp = 200;
     return temp + this.temp;
}

alert(typeof(foo01));
alert(foo01()); 

运行结果:
function
300
最普通的function使用方式,定一个JavaScript函数。两种写法表现出来的运行效果完全相同,唯一的区别是后一种写法有较高的初始化优先级。在大扩号内的变量作用域中,this指代foo01的所有者,即window对象。

使用方法二:
var foo02 = new function()
{
     var temp = 100;
     this.temp = 200;
     return temp + this.temp;
}

alert(typeof(foo02));
alert(foo02.constructor());   

运行结果:
object
300
这是一个比较puzzle的function的使用方式,好像是定一个函数。但是实际上这是定一个JavaScript中的用户自定义对象,不过这里是个匿名类。这个用法和函数本身的使用基本没有任何关系,在大扩号中会构建一个变量作用域,this指代这个作用域本身。
var obj = (new function(){
   this.a = 123;
   this.fn = function(e){alert(e)};
   //return new String('123');
   //return 123;
});
obj.fn(123);
可以理解返回一个对象。
(new function(){
   return '123';
})
与
(new function(){
   return new String('123');
}) 又有什么区别呐?


使用方法三:
var foo3 = new Function('var temp = 100; this.temp = 200; return temp + this.temp;');
alert(typeof(foo3));
alert(foo3()); 

运行结果:
function
300 
使用系统内置函数对象来构建一个函数,这和方法一中的第一种方式在效果和初始化优先级上都完全相同,就是函数体以字符串形式给出。

使用方法四:
var foo4 = Function('var temp = 100; this.temp = 200; return temp + this.temp;');
alert(typeof(foo4));
alert(foo4());

运行结果:
function
300

参考:

http://www.jb51.net/article/13894.htm
http://www.jb51.net/article/13895.htm
http://www.planabc.net/2008/02/20/javascript_new_function/
http://cykit.iteye.com/blog/72950
分享到:
评论

相关推荐

    function, new function, new Function之间的区别

    ### JavaScript中的function, new function, new Function之间的区别 在JavaScript编程语言中,函数是一等公民,这意味着函数不仅可以作为值被赋给变量、作为参数传递给其他函数,甚至还可以被当作返回值从函数中...

    你可能不知道的JavaScript的new Function()方法

    `new Function()` 是JavaScript中的一个不太常见的构造函数,它允许我们动态地创建函数。这个方法在某些特定场景下非常有用,尽管在日常编程中不常用,因为它与传统的函数声明和匿名函数表达式相比,可能存在一些...

    邪恶的eval和new Function使用介绍

    eval 和 new Function 的邪恶使用介绍 Eval 和 new Function 是 JavaScript 中两个强大的函数,但是它们也可以被恶意使用,导致潜在的安全风险。在这篇文章中,我们将探讨 Eval 和 new Function 的邪恶使用介绍,...

    ES6中new Function()语法及应用实例分析

    在JavaScript的ES6标准中,`new Function()`是一个不太常见的构造函数,用于动态创建函数。它的工作原理是接受一个或多个参数,这些参数分别代表函数的参数名,然后是一个字符串,这个字符串包含了函数的实现代码。...

    关于eval 与new Function 到底该选哪个?

    在JavaScript编程中,`eval` 和 `new Function` 都被用来执行字符串化的JavaScript代码,但它们之间存在着一些重要的区别和使用场景上的考量。本文将深入探讨这两个函数的特性和性能差异,帮助开发者做出明智的选择...

    详解new function(){}和function(){}() 区别分析

    情景一:var yx01 = new function() {return “圆心”}; alert(yx01); 我们运行情景一代码,将返回显示“[object object] ”,此时该代码等价于: function 匿名类(){ return “圆心”; } var yx...

    理解Javascript Function与Object

    在这篇文章中,我们将深入探讨Function和Object的关系,了解它们之间的联系和区别。 Function:函数对象 ---------------- 在JavaScript中,函数是一个对象,它代表了函数的概念。所有的函数对象都是由Function这...

    javascript使用eval或者new Function进行语法检查

    在没有专门的语法解析库的情况下,可以利用JavaScript自身提供的功能来进行简单的语法验证,如使用`eval()`或`new Function()`。 `eval()`方法是JavaScript中的一个函数,它能够将字符串作为JavaScript代码执行。在...

    聊聊new Function这个陌生面孔及函数作用域和函数执行顺序

    【标题】: "深入理解JavaScript中的new Function与函数作用域和执行顺序" 【描述】: 本文将探讨JavaScript中不常见的new Function构造函数的用法,以及函数的作用域和执行顺序这两个关键概念。通常,我们定义函数的...

    new.tar.gz_NEW_smoothing function

    smoothing a function

    db2 function 和 procedure

    根据参数数量和返回类型,DB2函数可以分为标量函数(Scalar Function)、聚合函数(Aggregate Function)和窗口函数(Window Function)。 2. **创建函数**:使用`CREATE FUNCTION`语句来定义一个新的函数。例如,...

    js中function函数的使用方法.docx

    var func = new Function('arg1', 'arg2', 'alert(arg1 + " : " + arg2)'); func('ooo', 'ppp'); // 弹出框显示 'ooo : ppp' ``` 这种方式可以动态创建并执行函数,但在生产环境中需谨慎使用,因为它可能存在安全...

    flash与C#通信 CallFunction 出现COM组件错误的处理

    XmlTextWriter xw = new XmlTextWriter(new StringWriter(sb)); xw.WriteStartElement("invoke"); xw.WriteAttributeString("name", Fname); xw.WriteAttributeString("returntype", "xml"); xw....

    math function

    Namespace xFunction Public Class f Const NumList = "零壹贰叁肆伍陆柒捌玖" Const UnitList = "仟佰拾亿仟佰拾万仟佰拾元角分" Public Shared Sub StringList() Dim tmepList As New List(Of String) ...

Global site tag (gtag.js) - Google Analytics