`

js的Function 是个对象

阅读更多

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函数看作是其他语言的“函数”,那样就会浪费它的灵活性,它可以像其它类型实例一样被当作参数传递。

分享到:
评论

相关推荐

    JS定义类或对象

    Javascript是基于对象的脚本语言,理所当然会有对象概念的存在,通常我们在项目中都是运用“function fnname{…..}”的形式直接声明一个方法,再去调用。这么做很方便。但是如果你的项目中拥有频繁的JS操作,比如...

    function对象的hoisting特性

    页面前端技术 javascript的function对象的hoisting特性详解

    JavaScript中Function函数与Object对象的关系

    Function是javascript里最常用的一个概念,javascript里的function是最容易入手的一个功能,但它也是javascript最难理解最难掌握的一个概念。 今天我们来尝试理解Function和Object.因为这个里面有些人前期可能会搞...

    Javascript中获取对象的原型对象的方法小结

    在Javascript中,如果我们有一个对象但是又不知道它的构造函数时,如何获取它的原型对象呢? 在Chrome中或是FireFox浏览器中,我们可以直接使用对象的__proto__属性获取它的原型对象。 代码如下: <!– lang: js ...

    javascript判断一个变量是数组还是对象

    我们能够使用typeof判断变量的身份,判断字符串得到string,数字和NaN得到number,函数会得到function等,但是判断数组,对象和null时都会得到object,详细请看js数据类型,这就是typeof的局限性,并不能准确的判断...

    javascript面象对象编程

    函数对象和其它内部对象的关系 – 对于Function, Object, Array, Date, RegExp, Math, Error等内部对象 可使用new操作来返回一个对象实例 三、类 1. 实现 2. 公有成员,私有成员,静态成员 3. 类的继承

    JavaScript比较两个对象是否相等的方法

    本js代码通过对js对象进行各方面的比较来判断两个对象是否相等 cmp = function( x, y ) { // If both x and y are null or undefined and exactly the same if ( x === y ) { return true; } // If they are not ...

    JavaScript使用function定义对象并调用的方法

    主要介绍了JavaScript使用function定义对象并调用的方法,实例分析了javascript中function定义及使用对象与方法的相关技巧,需要的朋友可以参考下

    javascript 面向对象function详解及实例代码

    javascript 面向对象function详解  js中的函数有三种表示方式: //函数的第一种表示方式:函数关键字的方式 function f1() { alert("f1"); } //函数的第二种表示方式:函数字面量的方式 var f2 = ...

    JavaScript通过function定义对象并给对象添加toString()方法实例分析

    主要介绍了JavaScript通过function定义对象并给对象添加toString()方法,实例分析了javascript中function定义对象及添加方法的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    【JavaScript源代码】详解js创建对象的几种方式和对象方法.docx

     function getObj(name, age) { let obj = {} obj.name = name obj.age = age return obj } let person1 = getObj("cc", 31) 缺点:不知道新创建的对象是什么类型 通过一个构造函数,得到一个对象实例。...

    深入浅析JS Function()构造函数

    js中function对象是一个令人着迷的东西,但由于他太过于灵活,常常令人迷惑. 先给大家看个代码片段。 var scope="global"; function constructFunction(){ var scope="local"; return new Function(" return scope...

    JavaScript面向对象

    在JavaScript中定义JavaScript对象有两种方式: 方式一: var Book ={ getBookName:function(){ alert("获取书的名称") ; } }; 方式二 var oBook = function(){}; oBook.getBookName=...

    js中function()使用方法

    javascript 函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。在继续讲述之前,先看一下函数的使用语法: 以下是...

    js获取对象,数组所有属性键值(key)和对应值(value)的方法示例

    本文实例讲述了js获取对象,数组所有属性键值(key)和对应值(value)的方法。分享给大家供大家参考,具体如下: [removed] var values=function(object) { var values = []; for (var property in object) values....

    JavaScript对象验证库js-validator.zip

    js-validator 是 Laravel 风格的 JavaScript 对象验证库。使用 js-validator 来验证对象或者 JSON 是否符合规则非常方便,而且具有很好的可扩展性。举个例子var example = {  text: 'Hello world!',  date: ...

    微信小程序 两种为对象属性赋值的方式详解

    对应config.js data:{ //定义对象 configs:{} } //方式一 switchChange:function(e){ //为对象的某一属性赋值 configs.config1={ }; console.log(e); } //方式二 switchChange:function(e){ //为对象的某一...

    控制台报错object is not a function的解决方法

    看着代码发现一个radio对象的name属性和一个function name重名了。代码如下: <body> <input type="radio" name="test" onclick="test();"/> <form action=""> <input type="radio" ...

    【JavaScript源代码】五句话帮你轻松搞定js原型链.docx

     原型链是一种机制,指的是JavaScript每个对象包括原型对象都有一个内置的[[proto]]属性指向创建它的函数对象的原型对象,即prototype属性。 作用:原型链的存在,主要是为了实现对象的继承。 一、 记住以下5句话...

Global site tag (gtag.js) - Google Analytics