详解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 【资源介绍】 该项目是个人课设项目,...
如: 代码如下: 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面向对象...JavaScript的独特之处在于它的灵活性和动态性,这使得它成为了一种非常强大的工具,适用于各种不同的应用场景。随着ES6及更高版本标准的引入,JavaScript的面向对象能力得到了进一步增强。
在JavaScript编程中,异步处理是一项核心特性,它允许代码在等待I/O操作(如文件读写、网络请求)时不会阻塞程序的执行。然而,有时开发者可能需要将异步函数转换为同步形式,以便在特定场景下更容易控制流程。本文...
### JavaScript所能实现屏蔽功能总汇 #### 一、概述 JavaScript是一种广泛应用于网页开发中的脚本语言,它能够实现丰富的动态效果与交互性。在实际应用中,除了增强用户体验外,JavaScript还可以用来实现某些屏蔽...
JavaScript控件开发是Web应用程序中不可或缺的一部分,它允许开发者创建具有特定功能和交互性的用户界面元素。本篇文章将深入探讨JavaScript控件开发的基础知识,帮助初学者了解如何创建自己的控件,并提供一个实际...
在这篇文章中,我们将深入探讨`Function`引用类型,它是JavaScript中的一个重要概念。 **Function类型** 在JavaScript中,函数是第一类对象,这意味着它们可以像其他任何值(如数字或字符串)一样被赋值给变量、...
在IT领域,尤其是Web开发中,JavaScript作为浏览器端的主要编程语言,能够实现动态网页效果和用户交互。然而,在某些情况下,如访问本地资源、调用复杂计算逻辑或操作特定硬件时,仅依靠JavaScript是不够的。这时,...
JavaScript中的Function是编程的核心组成部分,它允许我们定义可重复使用的代码块,以便在需要时执行特定的任务。在JavaScript中,函数既是一种数据类型,也是一种执行上下文。它们可以通过两种方式定义:函数声明式...
- 相比之下,`window.onload()`需要等待整个页面(包括所有关联资源)完全加载后才执行。 **第六种:`body.onload`与`window.onload()`的区别** 1. 在HTML中,`(),fn2()">`允许同时调用多个函数,但这种方法已过时...
在JavaScript中有两种主要的函数定义方式,即函数声明(Function Declaration)和函数表达式(Function Expression)。这两种方式在大部分场景下表现相同,但在特定条件下会有差异。下面将详细讨论这两种函数定义...
JavaScript函数是编程语言的核心组成部分,它是一段可重复使用的代码块,可以接受参数并返回值。...总结,JavaScript函数是其强大和灵活的核心特性之一。理解并熟练运用上述知识点,将有助于编写高效、可维护的代码。