`
chuanru920
  • 浏览: 7942 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

js里的function其实是个对象

    博客分类:
  • js
 
阅读更多
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函数看作是其他语言的“函数”,那样就会浪费它的灵活性,它可以像其它类型实例一样被当作参数传递。
转载自:http://lynnbond.iteye.com/blog/1100987
分享到:
评论

相关推荐

    javascript面向对象编程

    4. **原型链**:多个对象通过原型链连接起来,当试图访问一个对象的属性时,JavaScript会向上查找原型链,直到找到该属性或者到达原型链顶端(即`null`)。这使得实例对象可以继承构造函数的原型上的属性和方法。 5...

    javascript对象

    JavaScript对象是基于原型的,这意味着每个对象都可以从另一个对象继承属性和方法。这种特性使得JavaScript非常适合面向对象编程。以下是对JavaScript对象的详细解释: 1. 对象创建: - 基本语法:`var obj = {};`...

    复习JavaScript面向对象技术

    在JavaScript中,我们还可以通过`Object.create`创建一个新对象,该新对象的`[[Prototype]]`链接到给定的对象。这允许我们实现继承,而无需构造函数。此外,`Object.assign`可以用来合并多个对象的属性到一个目标...

    js 原型对象和原型链理解

    之前对js中的原型链和原型对象有所了解,每当别人问我什么是原型链和原型对象时,我总是用很官方(其实自己不懂)的解释去描述。有一句话说的好:如果你不能把一个很复杂的东西用最简单的话语描述出来,那就说明你...

    JavaScript每天必学之数组和对象部分

    所有JavaScript对象都继承自一个基础对象——Object。 创建对象有两种常见方式: 1. 使用`new`运算符: ```javascript var obj = new Object(); ``` 这会创建一个新的对象实例,`new`关键字后面跟着构造函数`Object...

    js面向对象简单编程.pdf

    在JavaScript中,类其实是一个特殊的函数。我们可以使用`function`关键字来定义一个类,例如`Function class1() { }`。在ES6之后,引入了类的语法糖,可以使用`class`关键字进行更简洁的类定义。 2. **实例化对象*...

    js内置对象arguements简介

    在 JavaScript 编程语言中,`arguments` 是一个非常重要的类数组对象,它存在于每一个函数作用域内。尽管 `arguments` 并不是一个真正的数组,但它具备了一些数组的基本特性,如可以通过索引访问参数、拥有 `.length...

    javascript 面向对象编程 function也是类

    在JavaScript中,new操作符会创建一个新的空对象,然后将函数内的this指向这个新对象,并执行函数代码。这样,函数内部的属性就被添加到了新对象上。 接下来,我们需要探讨JavaScript中的成员访问性,即公共成员和...

    javascript创建对象的方式(四)

    JavaScript中的对象都有一个内置的`__proto__`属性,指向它们的原型对象。通过原型,可以为对象添加或继承属性和方法: ```javascript var personPrototype = { sayHello: function() { console.log("Hello!");...

    催米技术部研发团队技术分享:JS面向对象的基本概念及代码.zip

    1. **对象与属性**:在JS中,对象是键值对的集合,可以理解为一个字典或关联数组。对象的属性可以是数据属性(包含基本值或引用其他对象)和访问器属性(包含getter和setter方法)。例如: ```javascript let ...

    javascript Function函数理解与实战

    Function函数是javascript的基础也是实现功能的一个引爆点,我们通过实例分析让你对Function函数有一个更加深刻的理解以及在实际中的用法讲解。 Function 确实是一个对象.而我们定义的任何一个函数其实都是Function ...

    深入理解JS中的Function.prototype.bind()方法

    对于函数绑定(Function binding)很有可能是大家在使用JavaScript时最少关注的一点,但是当你意识到你需要一个解决方案来解决如何在另一个函数中保持this上下文的时候,你真正需要的其实就是 Function.prototype.bind...

    js面向对象 多种创建对象方法小结

    在JavaScript中,你可以通过大括号`{}`创建一个对象,然后在其中定义属性和方法。例如: ```javascript var clock = { hour: 12, minute: 10, second: 10, showTime: function() { alert(this.hour + ":" + ...

    NodeJS中文文档精编.pdf 全文免费

    exports 是一个对象,require 函数由 Node 提供,它返回的对象其实是 module 对象中的 exports 对象。 NodeJS 的应用非常广泛,例如可以用来编写服务器端代码、构建 Web 应用程序、开发桌面应用程序等。 NodeJS 的...

    前台提交到controller序列化复杂对象

    假设有一个名为`ComplexObject`的类,我们需要序列化其实例`myComplexObject`: ```csharp string jsonString = serializer.Serialize(myComplexObject); ``` `jsonString`现在包含了`myComplexObject`的JSON...

    关于JavaScript定义类和对象的几种方式

    可以看看这个例子: 代码如下: var a = ‘global’; (function () { alert(a); var a = ‘local’; })(); 大家第一眼看到这个例子觉得输出结果是什么...在函数里声明的变量可以看做这个对象的“类似属性”。对

    JavaScript笔记

    14.Function:js中一切都是对象,连方法都是1个对象!! 笔试题:js中方法定义集中方式: A:function compare(a,b){return a-b;}---*可以任意地方声明方法* B:var compare=function(a,b){return a-b;} ---| --...

    js代码-新建一个对象

    在JavaScript(JS)中,创建新的...以上就是与"js代码-新建一个对象"相关的JavaScript知识点,涵盖了对象字面量、构造函数、原型链、ES6的类以及项目文件的作用。理解并熟练运用这些概念对于JavaScript开发至关重要。

    悟透JavaScript

    - **Null**: 虽然看似无物,但其实是一个特殊的存在。它表示空或不存在的值。需要注意的是,尽管`null`本身不是对象(`typeof(null)`返回`object`),但它被视为一种特殊的非对象实体。 - **Boolean**: 只有两个值:...

Global site tag (gtag.js) - Google Analytics