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

2016-02-19 10:28 8 1 收藏

今天图老师小编给大家精心推荐个function, new function, new Function之间的区别教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

【 tulaoshi.com - Web开发 】

函数是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 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    这个方式是不常使用的,效果和方法三一样,不过不清楚不用new来生成有没有什么副作用,这也体现了JavaScript一个最大的特性:灵活!能省就省。

    关于函数初始化优先级这个问题,可以参看:"JS类定义原型方法的两种实现的区别"的回复。

来源:https://www.tulaoshi.com/n/20160219/1594728.html

延伸阅读
标签: SQLServer
  CREATE FUNCTION 创建用户定义函数,它是返回值的已保存的 Transact-SQL 例程。用户定义函数不能用于执行一组修改全局数据库状态的操作。与系统函数一样,用户定义函数可以从查询中唤醒调用。也可以像存储过程一样,通过 EXECUTE 语句执行。 用户定义函数用 ALTER FUNCTION 修改,用 DROP FUNCTION 除去。 语法 标量函数 CREATE FUNC...
标签: Web开发
大家都知道Javascript 有两个种定义Function的方法非常常用。例如 function a(){alert("a")} var a = function(){alert("a")} 虽然两个种方式定义出来的 function 调用的时候结果一样,但是中间还是有区别的。举个简单的例子,假如我们要重定义 a() ,而且新的方法要继承 a() 里面所有方法并且进行其他扩展的话。就可...
标签: Web开发
步骤:1.新建html页面,把以下代码考进去,运行。 2.把加密的代码粘进文本域,点击解密,OK! 核心代码: 代码如下: script a=62; function encode() { var code = document.getElementById('code').value; code = code.replace(/[\r\n]+/g, ''); code = code.replace(/'/g, "\\'"); var tmp = code.match(/\b(\w+)\b/g); tmp.s...
标签: ASP
  '========================== '过滤提交表单中的SQL '========================== function ForSqlForm()  dim fqys,errc,i,items  dim nothis(18)  nothis(0)="net user"  nothis(1)="xp_cmdshell"  nothis(2)="/add"  nothis(3)="exec%20master.dbo.xp_cmdshell"  nothis(4)="net local...
生死疆界(下)--- 在new与delete之间 作者:土豆 上回《 生死疆界(上)》 说到: 咱们对着微软在背后做的手脚深感困惑,于是备好车马粮草,一路追杀进去,最后走进了死胡同,剩下的最后希望就是在这里摸摸,那里敲敲,看有没有暗藏机关。 这正是:探源码身陷绝境,求解脱心系...

经验教程

979

收藏

45
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部