理解JavaScript函数(函数和对象的区别和联系)
2010-04-28 14:41
323 查看
原文:http://harrison2010.javaeye.com/blog/173446
函数对象和其他内部对象的关系
除了函数对象,还有很多内部对象,比如:Object、Array、Date、RegExp、Math、Error。这些名称实际上表示一个类型,可以通过new操作符返回一个对象。然而函数对象和其他对象不同,当用typeof得到一个函数对象的类型时,它仍然会返回字符串“function”,而typeof一个数组对象或其他的对象时,它会返回字符串“object”。下面的代码示例了typeof不同类型的情况:
以下是引用片段:
注意最后一个语句:func1.method1.mehotd1(),它调用了method1这个函数对象的method1方法。虽然看上去有点容易混淆,但仔细观察一下语法还是很明确的:这是一个递归的定义。因为method1本身也是一个函数,所以它同样具有函数对象的属性和方法,所有对Function类型的方法扩充都具有这样的递归性质。
Function是所有函数对象的基础,而Object则是所有对象(包括函数对象)的基础。在JavaScript中,任何一个对象都是Object的实例,因此,可以修改Object这个类型来让所有的对象具有一些通用的属性和方法,修改Object类型是通过prototype来完成的:
以下是引用片段:
在最后一条语句中,func2作为一个对象传递给了func1的形参theFunc,再由func1内部进行theFunc的调用。事实上,将函数作为参数传递,或者是将函数赋值给其他变量是所有事件机制的基础。
例如,如果需要在页面载入时进行一些初始化工作,可以先定义一个init的初始化函数,再通过window.onload=init;语句将其绑定到页面载入完成的事件。这里的init就是一个函数对象,它可以加入window的onload事件列表。
函数对象和其他内部对象的关系
除了函数对象,还有很多内部对象,比如:Object、Array、Date、RegExp、Math、Error。这些名称实际上表示一个类型,可以通过new操作符返回一个对象。然而函数对象和其他对象不同,当用typeof得到一个函数对象的类型时,它仍然会返回字符串“function”,而typeof一个数组对象或其他的对象时,它会返回字符串“object”。下面的代码示例了typeof不同类型的情况:
以下是引用片段:
以下是引用片段: Function.prototype.method1=function(){ alert("function"); } function func1(a,b,c){ return a+b+c; } func1.method1(); func1.method1.method1();
注意最后一个语句:func1.method1.mehotd1(),它调用了method1这个函数对象的method1方法。虽然看上去有点容易混淆,但仔细观察一下语法还是很明确的:这是一个递归的定义。因为method1本身也是一个函数,所以它同样具有函数对象的属性和方法,所有对Function类型的方法扩充都具有这样的递归性质。
Function是所有函数对象的基础,而Object则是所有对象(包括函数对象)的基础。在JavaScript中,任何一个对象都是Object的实例,因此,可以修改Object这个类型来让所有的对象具有一些通用的属性和方法,修改Object类型是通过prototype来完成的:
以下是引用片段:
function func1(theFunc){ theFunc(); } function func2(){ alert("ok"); } func1(func2);
在最后一条语句中,func2作为一个对象传递给了func1的形参theFunc,再由func1内部进行theFunc的调用。事实上,将函数作为参数传递,或者是将函数赋值给其他变量是所有事件机制的基础。
例如,如果需要在页面载入时进行一些初始化工作,可以先定义一个init的初始化函数,再通过window.onload=init;语句将其绑定到页面载入完成的事件。这里的init就是一个函数对象,它可以加入window的onload事件列表。
相关文章推荐
- 理解JavaScript函数(函数和对象的区别和联系)
- 【javascript基础】之【理解JavaScript函数(函数和对象的区别和联系)】
- 理解JavaScript函数(函数和对象的区别和联系)
- 理解JavaScript函数(函数和对象的区别和联系)
- 理解JavaScript函数(函数和对象的区别和联系)(转)
- 通过jquery获取input的value问题--理解JQuery对象和JS:DOM对象区别与联系
- java关于静态与实例的区别和联系以及对象的理解。
- 快速理解聚合根、实体、值对象的区别和联系
- 快速理解聚合根、实体、值对象的区别和联系
- javascript 对象和函数(方法)区别和联系
- C++中函数指针和函数对象的区别与联系
- Js 函数与对象的区别及原生链的理解
- 快速理解聚合根、实体、值对象的区别和联系
- 快速理解聚合根、实体、值对象的区别和联系
- 快速理解聚合根、实体、值对象的区别和联系
- javascript中对象和函数的区别与联系
- JS THIS 深入浅出 JavaScript 中的 this && 理解javascript函数调用和 this ** Javascript 普通函数和构造函数的区别
- php中引用&的真正理解-变量引用、函数引用、对象引用
- 深入理解javascript函数定义与函数作用域
- jQuery对象和DOM对象的区别和联系