Javascript内置对象arguments
作者:bea
arguments是JavaScript里的一个内置对象,和NodeList类似,拥有length属性,但没有push和pop等数组方法。 Dean Edwards的format函数很触发灵感: function format(string) { var args = arguments; var pattern = new RegExp('%([1-' + args.length + '])', 'g'); return String(string).replace(
arguments是JavaScript里的一个内置对象,和NodeList类似,拥有length属性,但没有push和pop等数组方法。
Dean Edwards的format函数很触发灵感:
function format(string) { var args = arguments; var pattern = new RegExp('%([1-' + args.length + '])', 'g'); return String(string).replace(pattern, function(match, index) { return args[index]; });}alert(format('%1 want to know whose %2 you %3', 'I', 'shirt', 'wear'));注意三点:1. String(string)的用法,保证了string为任何值(比如null, false, 123等)时都不会出错。2. 温习下replace方法,第二个参数可以是函数,非常灵活。3. arguments和正则的巧妙配合,实现了format功能。
将arguments转换为真实数组的办法:
var args = Array.prototype.slice.call(arguments);这个没什么好说的,类数组对象转换为数组都可以采用slice方法。
创建带预置参数的函数:
function makeFunc() { var args = Array.prototype.slice.call(arguments); var func = args.shift(); return function() { return func.apply(null, args.concat(Array.prototype.slice.call(arguments))); };}var majorTom = makeFunc(format, "This is Major Tom to ground control. I'm %1.");majorTom("stepping through the door");majorTom("floating in a most peculiar way");这个挺有意思的。makeFunc是一个可以创建函数的函数,所创建的函数都带有相同的的预置参数。这能避免代码重复,提高复用性。
创建自引用的函数:
function repeat(fn, times, delay) { return function() { if(times-- > 0) { fn.apply(null, arguments); var args = Array.prototype.slice.call(arguments); var self = arguments.callee; setTimeout(function(){self.apply(null,args)}, delay); } };}function comms { alert('s'); }var somethingWrong = repeat(comms, 3, 2000);somethingWrong("Can you hear me, major tom?");其实就是arguments.callee的用法,经常在匿名函数中用来引用自身,这里用来实现repeat函数。注意repeat是一个创建函数的函数,因此有了somethingWrong. 思路有点绕,但想想明白后,很不错。
有用 | 无用猜你喜欢
您可能感兴趣的文章:
- javascript操作HTML标签select
- 非常好的一个Javascript下拉菜单
- javascript实现页面关闭前提示是否关闭
- 详细说明常用的Javascript函数(json)
- Javascript实现百分比进度条加载flash
- javascript字符串替换replace的使用
- Jquery插件lazyload的使用和参数说明
- 分享一个ajax对象所有项目用这个就够了
- Javascript实现第二代身份证号码的验证
- 实现兼容IE和Firefox的Javascript方法innerText
- 强大的Jquery构造器$的实现方法
- Jquery实现普通按钮button回车事件
- JS鼠标滑过图片图片切换效果
- JS实现鼠标滑过显示其下拉列表
- this关键字在Javascript中实例讲解
- 改善Jquery代码性能的一些技巧
- 使用Javascript函数验证表单总结
- 使用Javascript如何获取网页地址和参数
- Javascript中数据的类型是如何转换的