详解new function(){}和function(){}()
类别:JavaScript , 来自: 怿飞’s Blog , 难度:4级 , 时间:2008-03-03 22:53, 浏览次数: 72
摘要: javascript中new function(){}和function(){}()的用法详解。
情景一:
无格式查看复制到剪贴板打印代码?
var yx01 = new function() {return "圆心"};
alert(yx01);
我们运行情景一代码,将返回显示“[object object] ”,此时该代码等价于:
无格式查看复制到剪贴板打印代码?
function 匿名类(){
return "圆心";
}
var yx01 = new 匿名类();
alert(yx01);
我们对情景一的代码进行下面改造:
无格式查看复制到剪贴板打印代码?
var yx01 = new function() {return new String("圆心")};
alert(yx01);
我们运行,将会发现返回的是“圆心”,这是为什么呢?
只要 new 表达式之后的 constructor 返回(return)一个引用对象(数组,对象,函数等),都将覆盖new创建的匿名对象,如果返回(return)一个原始类型(无 return 时其实为 return 原始类型 undefined),那么就返回 new 创建的匿名对象。
由于 new String 会构造一个对象,而不是一个 string 直接量,且new String(x) 如果带参数,那么alert它的时候就会返回 x。所以 yx01 将返回 new String(”圆心”) 这个对象,而 alert yx01 则显示 “圆心”。
情景二:
无格式查看复制到剪贴板打印代码?
var yx02 = function() {return "圆心"}();
alert(yx02);
我们运行情景二代码,将返回显示“圆心”,此时该代码等价于:
无格式查看复制到剪贴板打印代码?
var 匿名函数 = function() {return "圆心"};
yx02 = 匿名函数();
alert(yx02);
很明显,yx02 返回的是匿名函数的执行结果值,即 yx02 为:“圆心”。
function,new function,new Function对比
[日期:2007-12-20] 来源:食鸟轩 作者: [字体:大 中 小]
函数是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一个最大的特性:灵活!能省就省。
分享到:
相关推荐
基于JavaScript的校园解谜游戏源码+演示视频+报告PPT.zip 基于JavaScript的校园解谜游戏源码+演示视频+报告PPT.zip 基于JavaScript的校园解谜游戏源码+演示视频+报告PPT.zip 【资源介绍】 该项目是个人课设项目,...
JavaScript中的`function`函数是其核心特性之一,它允许我们定义可重复使用的代码块,能够封装任意数量的语句,并且可以在程序的任何位置被调用。JavaScript的函数与许多其他编程语言(如C)相比,具有独特的特点,...
如: 代码如下: function func() { //body code } (3) 使用JavaScript内置Function对象构造。如: 代码如下: var func = new Function(“/*parameters*/”,”/*body code*/”); 声明变量定义与使用function表达式...
JavaScript中的Function函数是编程语言的核心组成部分,用于封装可重复使用的代码段。JavaScript的函数具有多种用途,包括事件驱动、作为类构造器、闭包以及在DOM操作中的选择器功能。以下将详细介绍JavaScript中的...
### JavaScript面向对象进阶知识点详解 #### 8.1 面向对象编程的基本特性 在探讨面向对象的JavaScript之前,我们首先需要了解面向对象编程(Object-Oriented Programming, OOP)的基本特性:封装性、抽象性、继承...
JavaScript,作为全球最广泛使用的脚本语言之一,是构建网页动态功能和交互效果的基础。这个“JavaScript小技巧全集”提供了丰富的教程和源代码,旨在帮助开发者深入理解和掌握JavaScript的各种实用技巧。 首先,...
JavaScript使用`function`关键字来定义类。例如: ```javascript function Student(name, age) { this.name = name; this.age = age; } ``` 在这个例子中,`Student`可以被视为一个类,用于创建特定类型的对象。...
JavaScript 技巧大全 JavaScript 是一种广泛应用于 Web 开发中的脚本语言,下面是常用的 JavaScript 案例大全,包括原生 JavaScript 实现字符串长度截取、获取域名主机、清除空格、替换全部、转义 HTML 标签、还原 ...
JavaScript是一种强大的客户端脚本语言,广泛应用于Web开发中,用于创建动态、交互性强的网页。在本文中,我们将深入探讨如何使用JavaScript来增强网站的用户体验,以实现更丰富的交互效果。 一、事件处理 ...
在JavaScript中,ArrayList是一种常见的数据结构,它模拟了Java中的ArrayList功能,允许程序员进行动态数组操作。虽然JavaScript原生不支持ArrayList,但我们可以利用数组(Array)对象来实现类似的功能。下面将详细...
### JavaScript面向对象...JavaScript的独特之处在于它的灵活性和动态性,这使得它成为了一种非常强大的工具,适用于各种不同的应用场景。随着ES6及更高版本标准的引入,JavaScript的面向对象能力得到了进一步增强。
在JavaScript编程中,异步处理是一项核心特性,它允许代码在等待I/O操作(如文件读写、网络请求)时不会阻塞程序的执行。然而,有时开发者可能需要将异步函数转换为同步形式,以便在特定场景下更容易控制流程。本文...
partial function application, and dynamic functionsoffline detection and storing data on the client machinetechniques for JavaScript in an enterprise environment for better maintainability ...
在JavaScript中,函数是第一类对象,这意味着它们可以被赋值给变量、作为参数传递给其他函数,甚至可以作为其他函数的返回值。在这种上下文中,"JS Function 名称排序"指的是按照函数名称对这些可操作的对象进行排序...
JavaScript控件开发是Web应用程序中不可或缺的一部分,它允许开发者创建具有特定功能和交互性的用户界面元素。本篇文章将深入探讨JavaScript控件开发的基础知识,帮助初学者了解如何创建自己的控件,并提供一个实际...
在这篇文章中,我们将深入探讨`Function`引用类型,它是JavaScript中的一个重要概念。 **Function类型** 在JavaScript中,函数是第一类对象,这意味着它们可以像其他任何值(如数字或字符串)一样被赋值给变量、...
在IT领域,尤其是Web开发中,JavaScript作为浏览器端的主要编程语言,能够实现动态网页效果和用户交互。然而,在某些情况下,如访问本地资源、调用复杂计算逻辑或操作特定硬件时,仅依靠JavaScript是不够的。这时,...
JavaScript是一种轻量级的脚本语言,广泛用于网页开发中,其中函数是其核心组成部分之一。在JavaScript中,函数不仅仅是程序中的基本构建块,它还是一个对象类型。我们可以通过多种方式声明函数,每种方式在...
### JavaScript语言基础知识点详解 #### 1. 变量定义 **JavaScript** 是一种广泛使用的脚本语言,常用于Web前端开发。对于初学者来说,理解变量定义的基础知识至关重要。 - **变量命名规则**: - 变量名区分大小...
JavaScript-function-base函数基础.gif Javascript-operational-character运算符.gif JavaScript-process-statement流程控制.gif JavaScript-regular-expressions正则表达式.gif JavaScript-string-function字符串...