`

javascript中函数当做对象传递

 
阅读更多

javascript中,函数也是对象。

先说下js的两种定义函数对象的方式:

写道
function commMethod(){
            alert("commMethod is doing something");
        }
       
     
  var commMethod = function(){
            alert("commMethod is doing something");
        }

 上面的两种定义方式本质上是一样的。所以如果将这两个函数当做对象传递的时候,写法也是一样的。

 下面看一下javascript中,函数当做对象传递的例子

	//被调用的方法
		function commMethod


(){
			alert("commMethod is doing something");
		}
		
		//调用函数commMethod


的方法
		function methodInvoke(method){
			method();
		}
		methodInvoke(commMethod);

 

很显然,上面的例子也可以这么写

	var commMethod 


= function(){
			alert("commMethod is doing something");
		}
		//调用函数commMethod


的方法
		function methodInvoke(method){
			method();
		}
		methodInvoke(commMethod);

 这两种的方式是一样的。

当然,我们也可以不定义commMethod,直接用无具名的对象 调用。

	function methodInvoke(method){
			method();
		}
		methodInvoke(function(){
				alert("commMethod is doing something");
		});

 这种写法和上面的写法是一样的。

下面写一种带参的调用:

//被调用的方法
		function commMethod(keword){
			alert("commMethod is doing something" + keword);
		}
		//这个和function commMethod这种定义的方式效果一样,不再单独写。



		/**var commMethod = function(keword){
			alert("commMethod is doing something" + keword);
		}**/
		//调用函数commMethod方法
		function methodInvoke(method){
			var keyword = "   hi,girl";
			method(keyword);
		}
		methodInvoke(commMethod);

 结果

commMethod is doing something   hi,girl"

如果用无具名函数进行调用,你会不会迷糊呢?反正我一开始迷糊了。

function methodInvoke(method){
			var keyword = "   hi,girl";
			method(keyword);
		}
		methodInvoke(function(key){
			alert("无具名函数的调用:::" + key);
		});

 结果:

无具名函数的调用::: hi,girl

无具名函数的调用和上面的函数调用过程是一样的,只不过比较难理解一些。

看完了上面的过程,你再看下jquery的ajax请求里面的get方法

$.get("test.php", function(data){
  alert("Data Loaded: " + data

);
});

 对于data的值怎么来的,是不是倍感亲切了。

 

分享到:
评论

相关推荐

    JavaScript函数的定义方法及函数的参数和优化.docx

    JavaScript 函数的定义方法及函数的参数和优化 ...一旦参数数量非常多,且存在很多可选参数,有些参数是不必要的,但是参数仍是按照顺序进行传递的,这个时候一定要把参数转换成对象进行参数传递。

    深入领悟JavaScript中的面向对象

    而“方法对象”指的是JavaScript中的函数(function),它们在JavaScript中也被视为一种特殊的对象。 JavaScript的函数可以被执行,这是其方法对象属性的体现。一个函数可以通过在其后添加一对括号()来执行,显示其...

    函数式编程中文版.pdf

    在函数式编程中,函数是第一类公民,意味着函数可以被当做参数传递给其他函数、作为其他函数的返回值以及赋值给变量。这种编程范式强调的是无副作用、不变性和引用透明性。 纯函数是指没有副作用,不会引起外部状态...

    Javascript函数的参数

    在本文中,我们主要探讨了Javascript函数参数的使用和特性。Javascript是一种动态类型语言,它不会对函数的参数进行类型检查,这意味着任何类型的值都可以作为参数传递给函数。这一点在函数参数不足或者过多时表现得...

    JavaScript经典实例

     6.5把一个函数当做参数传递给另一个函数  6.6实现递归算法  6.7创建能够记住其状态的函数  6.8使用一个通用的科里化函数提高应用程序性能  6.9使用缓存计算(Memoization)来提高应用程序性能  6.10使用匿名...

    JS匿名函数和匿名自执行函数概念与用法分析

    在JavaScript中,由于函数本身可以被当做一等公民来操作,因此可以将函数赋值给变量或者作为参数传递。例如,在事件监听器中,我们经常使用匿名函数作为回调函数。在上述提供的内容中,有几种场景展示了匿名函数的...

    json对象转为字符串,当做参数传递时加密解密的实现方法

    本文将详细介绍如何在JavaScript中实现JSON对象与字符串之间的转换以及加密解密的方法。 首先,让我们来看看如何将JSON对象转换为字符串。在JavaScript中,我们可以利用JSON对象提供的`stringify()`方法来完成这个...

    JavaScript回调(callback)函数概念自我理解及示例

    在JavaScript里什么叫Callback“回调函数”,用我的话来讲就是把方法b当做一个参数传递个方法a,当方法a执行完后执行另外一个指定函数(这里是b函数)。来看个列子: 代码如下: <html> <head> <...

    字符串内特殊字符在html_javascript_xml等内使用时的转换

    但是我对它进行了测试,发现有很多错误,或者是函数过期,或者是替换字符串写错,还有对javascript的转换函数中缺少对”\”的转换.于是对其进行了修正,然后测试就成功了!比如我上面的例子,若使用该组件的话只需要: ...

    Javascript核心读书有感之类型、值和变量

    函数在JavaScript中可以当做普通对象来对待,且可以作为构造函数(constructor)来创建新的对象实例。 JavaScript中的数据类型转换是自由的。例如,如果程序需要一个字符串而提供了数字,则JavaScript会自动将数字...

    CrystalAngelLee#crystal-interview#为什么函数被称为一等公民1

    函数可以被当做参数传递给其他函数,可以作为另一个函数的返回值,还可以被赋值给一个变量// 被赋值给变量const foo = function() {// 用变

    深入理解Ruby中的block概念

    First-class functions 是指在某些语言里,函数是一等公民,可以把函数当做参数传递, 可以返回一个函数,可以把函数赋值个一个变量等等,反正就是正常值能做的事函数都能做。JavaScript 就是这样的

    javascript之bind使用介绍

    JavaScript 中的 bind 方法是 ECMAScript 5 引入的一个函数方法,它允许我们创建一个新的函数,新函数在调用时设置函数体内 this 关键字的值。Bind 方法的出现,为开发者提供了一种改变函数执行上下文(也就是 this ...

    React中this丢失的四种解决方法

    在事件处理器中,方法被当做回调函数直接调用,这时候的this默认指向全局对象(在浏览器中是window),而不是组件实例。这就是this丢失的问题。 为了解决React中this丢失的问题,我们可以采取以下四种方法: 1. 在...

    js代码-Generator!!!

    在JavaScript的世界里,Generator是一种特殊的函数,它允许执行异步操作或者控制流管理,而无需使用回调函数或 Promise。Generator 函数是ES6引入的一种新的语法特性,它以`function*`关键字定义,并通过`yield`...

    AngularJS基础学习笔记之控制器

    在AngularJS中,控制器是一个Javascript函数(类型/类),用来增强除了根作用域意外的作用域实例的。当你或者AngularJS本身通过<code>scope.$new俩创建一个新的子作用域对象时,有一个选项能让你将它当做参数传递给...

    JSONP解决JS跨域问题的实现

    服务器在处理完请求后,返回一段JavaScript代码,这段代码调用了前端定义的函数,并将数据作为参数传递给这个函数。这样的结果是,前端定义的函数被实际执行,并处理了来自服务器的数据。 最后,为了方便管理,通常...

    从数据库读取数据后将其输出成html标签的三种方法

    我们将包含HTML标签的字符串传递给 `html()` 函数,使得浏览器能够解析并渲染这段HTML。 **JavaScript 示例**: ```javascript var dobj = document.getElementById("div"); dobj.innerHTML = "我是HTML代码</span>...

Global site tag (gtag.js) - Google Analytics