Js函数其实是个对象,但我总拿它和Java的方法一样对待,因为它的写法明明就是一个“函数”。
其实我们常用的定义函数的写法只是写法之一,写法其实有三种:
1 声明式的(静态的)
2 对象式的(动态的)
3 字面量式的(也被称为函数表达式)
下面分别介绍一下。
1 声明式的
写法:function func(param1,param2…){…};
这是最常用的,它是静态的,和Java的静态方法类似,在页面加载时就被解析,且只解析一次。这个我就不细说了,程序员都知道。
2 对象式的
写法:var func =new Function("param1","param2",..."function body");
例子:var sayHi=new Funciton("toWhom","alert('hi'+toWhom)");
说明:构造函数的参数个数不确定,倒数第一个形参就是函数体,其它的形参就是函数的形参。
对象式(其实这是我给命的名,书中叫动态式我觉得欠妥,这种写法明明就是在创建对象)是动态的,因为它构造函数的参数都是字符串,可以动态改变。正是如此,函数体每创建一次,浏览器都要重新解析,性能肯定不如静态方式,但它也有它的优势,因为你可用利用它动态创建一个函数。
3 字面量式
写法:var func=function [函数名可选,函数内可见](parms){...};
例子:var func=function funcTest(id){alert(id)}
说明:这种写法的函数名,只有在函数体内可见,可用于实现递归函数。
字面量式多用于事件注册,如:obj.onclick=function(this){alert(this.id)}。
无论用何种写法,实际上都是创建了一个函数对象,没有本质的区别。不能凭经验想当然把js函数看作是其他语言的“函数”,那样就会浪费它的灵活性,它可以像其它类型实例一样被当作参数传递。
分享到:
相关推荐
每个JavaScript对象都有一个`__proto__`属性,指向创建该对象的构造函数的原型。原型对象也是一个对象,可以通过`prototype`属性来访问。我们可以在原型上定义方法,这样所有实例都可以访问这些方法: ```...
所有的对象都将继承Object的原型,包括Function对象。 例如,下面的代码: ``` function Foo() {}; var foo = new Foo(); alert(foo instanceof Foo); // true alert(foo instanceof Function); // false alert(foo...
JS 面向对象经典案例 在JavaScript中,面向对象编程是非常重要的一部分。它提供了一种创建和组织代码的方式,能够让开发者更好地组织和维护代码。在本文中,我们将介绍JavaScript面向对象编程中的经典案例,包括...
在JavaScript中,使用new关键字创建一个新对象的过程是一个涉及多个步骤的机制,其目的是构造一个新的实例对象。这个过程涉及几个关键的内部操作,理解它们有助于更好地掌握JavaScript的原型继承和面向对象编程。 1...
在这种上下文中,"JS Function 名称排序"指的是按照函数名称对这些可操作的对象进行排序,通常是为了在展示或处理函数列表时保持一定的逻辑顺序或便于阅读。 在JavaScript中,我们可以使用`Array.prototype.sort()`...
在JavaScript编程中,获取对象和数组的属性键值(key)和对应值(value)是一项基本操作。本文将详细介绍如何实现这一功能,并提供相应的代码示例。 首先,我们需要理解JavaScript中的对象和数组。对象是一种键值对...
### JavaScript面向对象进阶知识点详解 #### 8.1 面向对象编程的基本特性 在探讨面向对象的JavaScript之前,我们首先需要了解面向对象编程(Object-Oriented Programming, OOP)的基本特性:封装性、抽象性、继承...
它们与JS的标准对象相对,后者如Date、Array等是由语言内置的。 1.2.2 原型(prototype) 原型是JavaScript中一种特殊的概念,它允许我们在运行时为对象添加新的属性和方法。通过`prototype`,我们可以扩展内置对象...
JavaScript自定义对象 在JavaScript中,自定义对象是一种非常重要的概念,它允许开发者创建自己的对象类型,从而满足不同的需求。JavaScript自定义对象可以通过多种方式创建,包括工厂方法、构造函数、原型方式和...
在JavaScript中,每个函数都有一个`prototype`属性,这是一个对象,其中包含可以由特定类型的所有实例共享的属性和方法。这是实现继承的一种机制,使得我们可以扩展对象的功能而不必在每次创建新实例时都重复代码。 ...
### JavaScript面向对象编程详解 #### 一、引言 JavaScript作为一种广泛使用的脚本语言,在Web开发领域占据着举足轻重的地位。尽管JavaScript本质上是一种基于原型的语言,但它也支持面向对象编程的一些特性,使得...
### JavaScript面向对象编程精要 #### 一、引言 JavaScript是一种灵活且强大的脚本语言,它虽然起源于一种简单的浏览器脚本语言,但随着时间的发展,JavaScript已经成为了一种功能全面的编程语言,尤其是在Web开发...
### JS中自定义类和对象知识点详解 #### 一、工厂方法 在JavaScript中,**工厂方法**是一种创建对象的模式。它通过定义一个函数来返回一个特定类型的对象,这种方式可以使代码更加简洁和通用。 ##### 示例 ```...
在JavaScript中,每个对象都有一个内置的原型属性`__proto__`,它指向创建该对象的构造函数的原型。原型对象本质上也是一个对象,可以包含属性和方法,供实例对象共享。当试图访问一个对象的属性时,JavaScript会...
### JS定义类或对象 #### 一、JavaScript与对象概念 JavaScript是一种基于对象的脚本语言,这意味着在JavaScript中,对象扮演着非常重要的角色。在实际项目开发中,开发者经常通过`function fnname{…}`的方式直接...
JavaScript,作为一种广泛应用...JavaScript 面向对象程序设计——继承与多态.pdf 和 JavaScript 面向对象程序设计——封装.pdf 这两个文档可能深入探讨了这些主题,帮助读者深入理解并掌握JavaScript的面向对象开发。
JavaScript中的函数对象(Function Object)本质上是一个对象,意味着可以给函数添加属性和方法。函数对象与其他用户定义的对象有本质上的区别,函数对象是由JavaScript解释器维护和运行的内部对象。 ### 内置对象 ...
JavaScript的对象都有一个内置的`__proto__`属性,指向创建该对象的构造函数的原型。我们可以通过原型来添加或修改对象的方法和属性。例如: ```javascript Person.prototype.sayHello = function() { console....
4. **arguments对象**:函数调用时,JavaScript会自动创建一个`arguments`对象,它是一个类数组对象,包含了函数调用时传入的所有参数。 5. **apply()与call()**:这两个方法允许我们改变函数调用时的`this`上下文...
#### 四、利用Function处理AJAX返回的JS脚本 有时候,我们需要动态执行通过AJAX获取的JavaScript代码: ```javascript var func = new Function('arg1', 'arg2', 'alert(arg1 + " : " + arg2)'); func('ooo', 'ppp...