javascript 面向对象编程 function是方法(函数)(2)

匿名函数一般可以满足临时的函数需求,不需要有变量对其进行引用(有名的函数可以认为是有变量引用的函数)。比如需要一个函数做为值对象做为参数传入方法、需要编程的方式为对象添加事件,用匿名函数都可以很好的完成。当然你也可以单独声明变量来引用某个匿名函数对象,这和普通有名函数就没什么区别了。

function Each(array, fun) { for (var i = 0; i < array.length; i++) { fun(array[i]); }; }; var nums = [1, 2, 3, 4, 5, 6, 7]; Each(nums, function(arg) { alert(arg); });

上面代码执行,依次输出数组中的元素。

//在窗体加载时,在标题上显示当前时间 window.onload = function() { document.title = new Date().toString(); };  //也可以将匿名方法传入定时器中 setInterval(function() { document.title = new Date().toString(); }, 1000);

使用匿名函数绑定事件和进行定时操作。

var Hello = function() { alert("hello , everybody!"); };

如果将匿名函数赋给变量,那和有名的普通函数就没区别了。但不管是变量引用还是普通地有名函数,这样的函数在内存上都持久的占有一定资源。有时候我们只想执行一次大不必使用有引用的函数,直接执行匿名函数可能是最好的选择。把匿名函数包起来,加个括号执行,一切ok,这就是由匿名函数延伸出来的立即执行函数。

(function() { alert("hello , everybody!"); })();  (function(somebody) { alert("hello , " + somebody + "!"); })("张三");

立即执行函数在做事件绑定,设置回调函数等方面往往会有意想不到的效果,可以解决诸如对象引用等问题。

var student = { Name: "张三", Age: 20, Introduce: function() { alert("我叫" + this.Name + ",今年" + this.Age + "岁了!"); } }; window.onload = (function(obj) { return function() { obj.Introduce(); }; })(student);

因为javascript中函数的这些特点加之它的对象的特征,我们还可以写出一些有functional意味的程序出来。其实javascript中function真的是老大。

function Sum(fun, x) { if (x <= 0) return 0; return fun(x) + Sum(fun, x - 1); };  alert(Sum(function(i) { return i * i; }, 100));

下面这又是什么呢?是方法吗?是类吗?

function Point() { };

先啰嗦到这,下次再看看类。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjyfzf.html