- 浏览: 71062 次
- 性别:
- 来自: 大连
最近访客 更多访客>>
最新评论
-
newlangwen1:
你好 我想请教个问题,我运行了一下上面的程序,结果是输入什么就 ...
C程序 对文本行进行排序
http://bbs.51cto.com/thread-568228-1.html
以前学习javascript的时候,是被js漂亮的界面控制所吸引,所以学习的时候多数是以阅读网上js代码为主,凭借着自己对其他面向对象语言的理解,还是凑活能写些复杂的js程序。但是写的越多,不明白的也就越多,很多时候都只是知道要这么用,因为以前接触到的项目就是这么用的,但是不明白为什么这么写,所以,很早就想找点空闲的时间系统的学习下javascript,苦于一直没时间,拖了这么长久。呵呵,才有时间学学,把学习的总结写下来给新手一些参考,也给自己一个备忘。如果有什么写错的地方,希望高手们不要见笑。说了这么多废话,下面进入正题。
不管是绚丽多彩的js界面控制,还是编写复杂多样的ajax应用。相信function的高级应用是必不可少的。那么js中的function到底有什么不同呢?
1.
Javascript函数
在Javascript定义一个函数一般有如下4种方式:
fnction huchen(…){…}
var huchen2=function(…){…};
var huchen3=function huchen4(…){…};
var huchen5=new Function();
第1种就是最常用的方法,
用function关键字定义一个函数,并为每个函数指定一个函数名,通过函数名来进行调用。函数都是被维护为一个对象,这就是要介绍的函数对象(Function Object)。即用function关键字定义一个函数对象。
后面3种是把函数对象(Function Object)赋给变量,而这个函数对象本身是没有名字的,即匿名函数。
2.
函数对象(Function Object)
在js中,有很多内部对象,比如:Object、Array、Date、RegExp、Math、Error。这些名称实际上表示一个类型,可以通过new操作符返回一个对象。然而Function对象和其他对象不同,当用typeof得到一个Function对象的类型时,它仍然会返回字符串“function”,而typeof一个数组对象或其他的对象时,它会返回字符串“object”。下面的代码示例了typeof不同类型的情况:
以下是引用片段:
alert(typeof(Function));
alert(typeof(new Function()));
alert(typeof(Array));
alert(typeof(Object));
alert(typeof(new Array()));
alert(typeof(new Date()));
alert(typeof(new Object()));
运行这段代码可以发现:前面4条语句都会显示“function”,而后面3条语句则显示“object”,可见new一个Function实际上是返回一个函数。这与其他的对象有很大的不同。其他的类型Array、Object等都会通过new操作符返回一个普通对象。尽管函数本身也是一个对象,但它与普通的对象还是有区别的,因为它同时也是对象构造器,也就是说,可以new一个函数来返回一个对象。所有typeof返回“function”的对象都是函数对象。也称这样的对象为构造器(constructor),因而,所有的构造器都是对象,但不是所有的对象都是构造器。
可以通过object.constructor
属性来获得构造函数。
如:
var o = new Object();
alert(typeof(o));
alert(o.constructor);
typeof(o)返回的是object
而o.constructor返回的是
function Ojbect(){
[native code]
}
这说明Object本身就是通过function
定义的一个函数对象,而函数对象可以构造对象,即new
了一个函数对象Object
,构造了对象o。
Array、Date
等都是同样的。
而Function对象却不一样
var f = new Function();
alert(typeof(f));
alert(f.constructor);
我们看到typeof(f)返回的是function,而不是object
而f.constructor返回的是
function Function(){
[native code]
}
从上面可以看出new一个Function实际上是返回一个函数对象,而函数对象可以构造对象。我们再来看下面这个例子。
var f = new Function("x", "y", "this.X=x; this.Y=y;");
var point = new f(5,6);
alert(typeof(point));
alert(point.constructor);
alert(point.X);
我们看到typeof(point)弹出的是object,
而point.constructor弹出的是:
function anonymous(x, y){
this.X=x;
this.Y=y;
}
这种写法看起来有点变扭,但是细细梳理,其实并不难理解。
首先var f = new Function("x", "y", "this.X=x; this.Y=y;");
定义了一个函数对象f。这是匿名的函数对象,只是赋予了f,上面已经提到过。
而函数对象可以构造对象,var point = new f(5,6);
这里用函数对象f构造了一个新对象point,所以typeof(point)是object,point.constructor返回的是构造器,我们可以叫它为point对象的构造函数,它是匿名的所以返回的函数名是anonymous,如果把上面var f = new Function("x", "y", "this.X=x; this.Y=y;");
这句改成
function f(x, y){this.X=x; this.Y=y;}这句,那么point.constructor返回的将是function f(x,y){this.X=x; this.Y=y;}。这里就不是
匿名函数了。
发表评论
-
prototype.js
2010-06-27 20:53 619http://www.cnblogs.com/thinhuna ... -
javascript 中的prototype 说明
2010-06-27 20:50 641http://myfreespace.iteye.com/bl ... -
Javascript继承机制总结
2010-06-27 20:45 884http://info.codepub.com/2007/04 ... -
JavaScript Function对象
2010-06-24 20:44 909http://book.csdn.net/bookfiles/ ... -
深入javascript function对象(二)
2010-06-24 20:41 640http://bbs.51cto.com/thread-568 ... -
JavaScript的Function详细
2010-06-24 20:33 610Function (Built-in Object) Func ... -
Javascript 事件注册机制
2010-06-22 15:15 735http://www.360doc.com/content/0 ... -
全面剖析XMLHttpRequest对象
2010-06-21 20:29 411http://dev.yesky.com/91/2687091 ... -
投机取巧使用tomcat的一点备忘
2010-06-21 17:11 674部署的过程就是将编译后的项目copy到 webapps目录下, ... -
Javascript学习笔记之 HTML DOM Checkbox 对象
2010-06-08 20:16 961http://www.w3school.com.cn/html ... -
Javascript学习笔记之 HTML DOM opener 属性
2010-05-30 23:02 688【转】http://www.w3school.com.cn/h ... -
Javascript学习笔记之 Window 对象
2010-05-30 22:50 622【转】http://www.w3school.com.cn/ ... -
Javascript学习笔记之 JavaScript框架编程
2010-05-29 21:11 701转http://home.phpchina.com/spa ... -
Javascript学习笔记之 用链接对用户进行重定向
2010-05-26 22:37 14362.8 用链接对用户进行重定向 可以根据用户是否打开了Ja ... -
Javascript学习笔记之 闭包
2010-05-23 21:26 587转:http://apps.hi.baidu. ... -
Javascript学习笔记之 apply和call方法
2010-05-21 21:47 704apply方法和call方法都可以将函数绑定到其他对象上执行, ... -
【转】Factory Method(createMethod)模式的javascript实现
2010-05-21 09:45 672本文来自CSDN博客http://blog.csdn.net/ ... -
Javascript学习笔记之 Javascript中的函数
2010-05-20 22:20 572Javascript中的函数在函数调用中,可以通过argume ... -
Javascript学习笔记之函数(Function)对象
2010-05-19 21:41 703【转】http://163.qizhi.blog.163.co ... -
Javascript学习笔记之全局(Global)对象
2010-05-19 20:56 671备忘全局对象的几个属性或方法 1. NaN 特殊值,表示非数 ...
相关推荐
深入理解JavaScript系列(9):根本没有“JSON对象”这回事! 深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇) 深入理解JavaScript系列(11):执行上下文(Execution Contexts) 深入理解...
深入理解JavaScript系列(9):根本没有“JSON对象”这回事 深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇) 深入理解JavaScript系列(11):执行上下文(Execution Contexts) 深入理解...
Javascript 面向对象编程:构造函数的继承 本节主要介绍,如何生成一个”继承”多个对象的实例。 比如,现在有一个”动物”对象的构造函数, function Animal(){ this.species = "动物"; } 还有一个”猫”对象的...
javascript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。在继续讲述之前,先看一下函数的使用语法: ...
Function是javascript里最常用的一个概念,javascript里的function是最容易入手的一个功能,但它也是javascript最难理解最难掌握的一个概念。 1. Function类型是js中引用类型之一,每个函数实际上都是Function类型的...
本文进一步分析讲述了javascript面向对象之对象的深入理解。分享给大家供大家参考。具体分析如下: javacript面向对象程序设计中,可以理解为一切都是对象。实例代码如下: 代码如下:[removed] function Cat(){ } ...
对象,是javascript中非常重要的一个梗,是否能透彻的理解它直接关系到你对整个javascript体系的基础理解,说白了,javascript就是一群对象在搅。。(哔!)。 下面给大家介绍下常用的几种对象创建模式 使用new...
还有一种,称为“方法对象”,就是我们通常定义的 function。你可能觉得奇怪:方法就是方法,怎么成了对象了?但是在 JavaScript 中,方法的确是被当成对象来处理的。下面是一个简单的例子: 代码如下: function ...
写在前面 这篇文章讲解创建对象的各种方式,以及优缺点。 但是注意: 这篇文章更像是笔记,因为《JavaScript高级程序设计》写得真是太好了!...缺点:对象无法识别,因为所有的实例都指向一个原型 2. 构造函数模式
先从一个问题进行研究深入,什么是javascript对象继承? 比如我们有一个“动物”对象的构造函数。 function animal() { this.type = '动物'; } 还有一个“猫”对象的构造函数。 function cat(name,color) { ...
本文深入浅出的讲述了javascript面向对象快速入门实例。分享给大家供大家参考。具体如下: javascript面向对象入门案例: 代码如下:[removed] function Cat(){//js中对象的定义与函数一样,不同点在于怎么样调用。 ...
函数调用者与所有者 JavaScript 中函数(function) 存在调用者 与 所有者这两个概念,调用者是指调用函数的对象,通常是一个指向调用了当前函数的函数的引用,如果是顶层调用,那么caller=null, 大部分浏览器的...
函数对象 首先,大家得明确一个概念:函数... 注:Function对象本身也是一个函数,因此它也一个函数对象。关于Function的深入理解,请见后续博文。 正面我们来看一段代码: 代码如下: //定义方式一 function func(x)
Function对象是JavaScript里面的固有对象,所有的函数实际上都是一个Function对象。 我们先看看,Function对象能不能直接运 用构造函数创建一个新的函数呢?答案是肯定的。 var abc = new Function(x,y,return x*...
在JavaScript中“一切皆对象”,在这一方面,它比其他的OO语言来的更 为彻底,即使作为代码本身载体的function,也是对象,数据与代码的界限在JavaScript中已经相当模糊。虽然它被广泛的应用在WEB客户 端,但是其...
2.method 是面向对象中的概念,一般与类或对象成对出现 关系 1.对象的属性可以是任意类型 2.对象的属性如果是函数类型,它就叫做这个对象的方法 3.所以方法的本质还是函数 函数的调用 1.fun() 2.obj.fun() 3.fun...
这篇文章更像是笔记,因为《JavaScript高级程序设计》写得真是太好了! 1. 工厂模式 function createPerson(name) { var o = new Object(); o.name = name; o.getName = function () { console....
1、在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。arguments非常类似Array,但实际上又不是一个Array实例。可以通过如下代码得以证实(当然,实际上,在函数funcArg中,调用...
1、JavaScript中定义函数有2钟方法: 1-1.函数声明: 代码如下:function funcName(arg1,arg2,arg3){ //函数体} ①name属性:可读取函数名。非标准,浏览器支持:FF、Chrome、safari、Opera。 ②函数声明提升:指...
本篇主要是介绍Function方面使用的一些技巧(上篇),利用Function特性可以编写出很多非常有意思的代码,本篇主要包括:回调模式、配置对象、返回函数、分布程序、柯里化(Currying)。 回调函数 在JavaScript中,当...