jaychang 发表于 2013-1-19 04:14:27

JavaScript高阶函数示例

<html><head><title>高阶函数示例</title><script>Array.prototype.map = function(func){var len = this.length;var resArray = [];for(var i = 0 ; i < len ; i ++){                                        //func.call()的第一个参数作为call函数体中this的引用,如果call函数第一个                                        //参数为null或undefined那么this引用则为window,                                        //double函数的alert(this.location.href);证明了这一点                                        //this实参则赋给了double函数的x形参                                        //因此call是可以改变double函数体的this引用值的resArray = func.call(null,this);}return resArray;}                        function double(x){//alert("arg0="+arguments+",arg1="+arguments);alert(this.location.href);return x*2;}function gjhscs(){var a = ;var b = a.map(double);var c = "";for(var i = 0 ; i < b.length ; i ++){c += ","+b;}alert(c.substring(1,c.length));}</script></head><body><input type="button" value="高阶函数测试" /></body></html> 对于apply和call两者在作用上是相同的,但两者在参数上有区别的。
对于第一个参数意义都一样,但对第二个参数:
apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。
如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,)

同时使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入.
页: [1]
查看完整版本: JavaScript高阶函数示例