javascript 中function(){},new function(),new Function(),Function 简单介绍

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

function使用方式

 var foo01 = function() //或 function foo01()
 {
     var temp = 100;
     this.temp = 200;
     return temp + this.temp;
 }
 alert(typeof(foo01));  // function
 alert(foo01());          // 300 

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

new function()使用方式

var foo02 = new function()
 {
     var temp = 100;
     this.temp = 200;
     return temp + this.temp;
 }  

 alert(typeof(foo02));    //object
 alert(foo02.constructor());   //300   

这是一个比较puzzle的function的使用方式,好像是定一个函数。但是实际上这是定一个JavaScript中的用户自定义对象,不过这里是个匿名类。这个用法和函数本身的使用基本没有任何关系,在大扩号中会构建一个变量作用域,this指代这个作用域本身。(理解为实例化匿名类)

new Function()使用方式

var foo3 = new Function(‘var temp = 100; this.temp = 200; return temp + this.temp;‘);  

 alert(typeof(foo3));  //object
 alert(foo3());           //300

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

Function()使用方式

var foo4 = Function(‘var temp = 100; this.temp = 200; return temp + this.temp;‘);  

 alert(typeof(foo4));     //function
 alert(foo4());              //300

这个方式是不常使用的,效果和方法三一样,不过不清楚不用new来生成有没有什么副作用,这也体现了JavaScript一个最大的特性:灵活!能省就省。(不推荐使用)

原文地址:https://www.cnblogs.com/7qin/p/9607532.html

时间: 2024-10-27 17:34:05

javascript 中function(){},new function(),new Function(),Function 简单介绍的相关文章

JavaScript中的apply()方法和call()方法使用介绍

javascript中apply和call方法的作用及区别说明 call和apply的说明 call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性.既然作为方法的属性,那它们的使用就当然是针对方法的了,这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同. 语法:foo.call(this, arg1,arg

网页中使用css的几种方式简单介绍

网页中使用css的几种方式简单介绍: css在当前的网页中可以说是必须的,如果没有使用css,那么这个网页一般丑陋的难以想象,下面就介绍一下网页使用css的几种方式,希望对初学者能够有所帮助. 一.内联样式: 所谓的内联样式就是卸载标签之内的样式,代码如下: <div style="color:red;font-size:10px"></div> 也就是使用style方式在标签内规定div的样式. 二.内部样式表: 所谓内部样式表,就是样式表写在当前页面,而不是

JavaScript中的Date,RegExp,Function对象

Date对象 创建Date对象 //方法1:不指定参数var nowd1=new Date();alert(nowd1.toLocaleString( ));//方法2:参数为日期字符串var nowd2=new Date("2004/3/20 11:12");alert(nowd2.toLocaleString( ));var nowd3=new Date("04/03/20 11:12");alert(nowd3.toLocaleString( ));//方法3

javascript中undefined和null比较以及function类型举例

/** * undefined==null  返回 true * undefined === null  返回 false * undefined 表示变量定义了但是没有被赋值 * null 表示一个空对象的引用 */ //函数类型 Ext.onReady(function(){ function fun(){ console.info("info ... "); } //fun();  表示调用函数fun //fun  表示引用上面函数的名称 alert(typeof fun);  

JSON不支持Javascript中特殊的值undefined和function

先让我写了一遍的二叉树遍历,可惜当时考虑太多,在二叉树的初始化上浪费了太多时间,其实简单的对象访问和递归就可以解决一切,说到底怪自己准备不好,随后问了些优化的问题,比如避免重绘回流什么的,而后紫府大神询问我部门选择,我选了UC(可能因为这个部门不招人,给失败埋下了伏笔) 当然真实的系统不会像上述代码这样写死内容,一般用户通过后台数据查询,然后再根据后台数据动态创建拓扑节点.连线.组.子网等图元内容,并填充如图元名字.连线颜色.告警内容等属性信息. 从连接选项卡能看到检测到相机,是笔记本自带的摄像

CSS中的id选择器和class选择器简单介绍

<!-- CSS中选择器 CSS有两种选择器id和class,总之如果说你想在HTML元素中设置CSS属性, 你要在元素中设置id和class选择器.那么我们现在来一个一个的介绍这两中选择器 id选择器: HTML中的元素属性用id来设置id选择器,CSS中的id选择器是用"#"来定义的 比如: #para1 { text-align:center; color:red; } 这样就定义了一个选择器,什么是选择器,在网上查的是说需要改变的HTML元素,很正确,在一开始我们的内部样

Cocos2dx中的opengl使用(一)简单介绍

引擎提供了CCGLProgram类来处理着色器相关操作,对当前绘图程序进行了封装,其中使用频率最高的应该是获取着色器程序的接口:const GLuint getProgram(); 该接口返回了当前着色器程序的标识符.后面将会看到,在操作OpenGL的时候,我们常常需要针对不同的着色器程序作设置.注意,这里返回的是一个无符号整型的标识符,而不是一个指针或结构引用,这是OpenGL接口的一个风格.对象(纹理.着色器程序或其他非标准类型)都是使用整型标识符来表示的. CCGLProgram提供了两个

C++ STL中vector(向量容器)使用简单介绍

原文:http://www.seacha.com/article.php/knowledge/cbase/2013/0903/2205.html C++ vector(向量容器)是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组,或者作为动态内存. 在创建一个vector 后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector 默认指定,这个大小即cap

关于ArcGIS API for JavaScript中basemap的总结介绍(一)

实际上basemap这个概念并不只在arcgis中才有,在Python中有一个matplotlib basemap toolkit(https://pypi.python.org/pypi/basemap),是用来实现地理信息可视化的.其中,matplotlib是Python常用的数据绘制包,basemap是matplotlib的一个子包,用来进行地图绘制.本文所指的basemap是指esri提供的基础底图图层. 正式使用basemap是在前一阵做webgis开发的时候,需要在自己的矢量图层下面

如何理解并学习javascript中的面向对象(OOP) [转]

如果你想让你的javascript代码变得更加优美,性能更加卓越.或者,你想像jQuery的作者一样,写出属于自己优秀的类库(哪怕是基于 jquery的插件).那么,你请务必要学习javascript面向对象,否则你无法更灵活的使用javascript这门语言. 什么事闭包?到底什么是原型?(知道闭包和原型的,就算得上是javascript的高手了.但真正能够理解,并且灵活运用的人并不多)到底该如何学习javascript中的面向对象呢?在javascript这么语言正如日中天,相信不少人正在为