`
hcx_2008
  • 浏览: 122908 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

javascriptのfunction之谜

    博客分类:
  • J2EE
阅读更多
详解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的校园解谜游戏源码+演示视频+报告PPT.zip 【资源介绍】 该项目是个人课设项目,...

    【JavaScript源代码】JavaScript的function函数详细介绍.docx

    JavaScript中的`function`函数是其核心特性之一,它允许我们定义可重复使用的代码块,能够封装任意数量的语句,并且可以在程序的任何位置被调用。JavaScript的函数与许多其他编程语言(如C)相比,具有独特的特点,...

    JavaScript 定义function的三种方式小结

    如: 代码如下: function func() { //body code } (3) 使用JavaScript内置Function对象构造。如: 代码如下: var func = new Function(“/*parameters*/”,”/*body code*/”); 声明变量定义与使用function表达式...

    JavaScript中的Function函数

    JavaScript中的Function函数是编程语言的核心组成部分,用于封装可重复使用的代码段。JavaScript的函数具有多种用途,包括事件驱动、作为类构造器、闭包以及在DOM操作中的选择器功能。以下将详细介绍JavaScript中的...

    Javascript 面向对象的JavaScript进阶

    ### JavaScript面向对象进阶知识点详解 #### 8.1 面向对象编程的基本特性 在探讨面向对象的JavaScript之前,我们首先需要了解面向对象编程(Object-Oriented Programming, OOP)的基本特性:封装性、抽象性、继承...

    JavaScript小技巧全集 JavaScript教程 JavaScript源代码集

    JavaScript,作为全球最广泛使用的脚本语言之一,是构建网页动态功能和交互效果的基础。这个“JavaScript小技巧全集”提供了丰富的教程和源代码,旨在帮助开发者深入理解和掌握JavaScript的各种实用技巧。 首先,...

    Javascript面向对象编程

    JavaScript使用`function`关键字来定义类。例如: ```javascript function Student(name, age) { this.name = name; this.age = age; } ``` 在这个例子中,`Student`可以被视为一个类,用于创建特定类型的对象。...

    常用javascript案例大全

    JavaScript 技巧大全 JavaScript 是一种广泛应用于 Web 开发中的脚本语言,下面是常用的 JavaScript 案例大全,包括原生 JavaScript 实现字符串长度截取、获取域名主机、清除空格、替换全部、转义 HTML 标签、还原 ...

    使用javaScript增强交互效果

    JavaScript是一种强大的客户端脚本语言,广泛应用于Web开发中,用于创建动态、交互性强的网页。在本文中,我们将深入探讨如何使用JavaScript来增强网站的用户体验,以实现更丰富的交互效果。 一、事件处理 ...

    JavaScript 实现基础 ArrayList 功能

    在JavaScript中,ArrayList是一种常见的数据结构,它模拟了Java中的ArrayList功能,允许程序员进行动态数组操作。虽然JavaScript原生不支持ArrayList,但我们可以利用数组(Array)对象来实现类似的功能。下面将详细...

    JAVASCRIPT 面向对象编程精要

    ### JavaScript面向对象...JavaScript的独特之处在于它的灵活性和动态性,这使得它成为了一种非常强大的工具,适用于各种不同的应用场景。随着ES6及更高版本标准的引入,JavaScript的面向对象能力得到了进一步增强。

    异步函数同步_Make_an_asynchronous_function_synchronous_javascript

    在JavaScript编程中,异步处理是一项核心特性,它允许代码在等待I/O操作(如文件读写、网络请求)时不会阻塞程序的执行。然而,有时开发者可能需要将异步函数转换为同步形式,以便在特定场景下更容易控制流程。本文...

    Professional JavaScript for Web Developers英文版

    partial function application, and dynamic functionsoffline detection and storing data on the client machinetechniques for JavaScript in an enterprise environment for better maintainability ...

    JS Function 名称排序

    在JavaScript中,函数是第一类对象,这意味着它们可以被赋值给变量、作为参数传递给其他函数,甚至可以作为其他函数的返回值。在这种上下文中,"JS Function 名称排序"指的是按照函数名称对这些可操作的对象进行排序...

    javascript控件开发之控件初体验

    JavaScript控件开发是Web应用程序中不可或缺的一部分,它允许开发者创建具有特定功能和交互性的用户界面元素。本篇文章将深入探讨JavaScript控件开发的基础知识,帮助初学者了解如何创建自己的控件,并提供一个实际...

    JavaScript引用类型Function实例详解

    在这篇文章中,我们将深入探讨`Function`引用类型,它是JavaScript中的一个重要概念。 **Function类型** 在JavaScript中,函数是第一类对象,这意味着它们可以像其他任何值(如数字或字符串)一样被赋值给变量、...

    javascript

    在IT领域,尤其是Web开发中,JavaScript作为浏览器端的主要编程语言,能够实现动态网页效果和用户交互。然而,在某些情况下,如访问本地资源、调用复杂计算逻辑或操作特定硬件时,仅依靠JavaScript是不够的。这时,...

    javascript中Function类型详解

    JavaScript是一种轻量级的脚本语言,广泛用于网页开发中,其中函数是其核心组成部分之一。在JavaScript中,函数不仅仅是程序中的基本构建块,它还是一个对象类型。我们可以通过多种方式声明函数,每种方式在...

    JavaScript语言基础.pdf

    ### JavaScript语言基础知识点详解 #### 1. 变量定义 **JavaScript** 是一种广泛使用的脚本语言,常用于Web前端开发。对于初学者来说,理解变量定义的基础知识至关重要。 - **变量命名规则**: - 变量名区分大小...

    javascript 基础 GIF套图

    JavaScript-function-base函数基础.gif Javascript-operational-character运算符.gif JavaScript-process-statement流程控制.gif JavaScript-regular-expressions正则表达式.gif JavaScript-string-function字符串...

Global site tag (gtag.js) - Google Analytics