JavaScript内置对象:arguments

呼市初三毕业生

呼市初三毕业生

2016-02-20 00:56

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的JavaScript内置对象:arguments懂设计的网友们快点来了解吧!

原文:. 很不错的文章,推荐一读。我的一点读后感:

arguments是JavaScript里的一个内置对象,和NodeList类似,拥有length属性,但没有push和pop等数组方法。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

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是一个可以创建函数的函数,所创建的函数都带有相同的的预置参数。这能避免代码重复,提高复用性。

创建自引用的函数:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)
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. 思路有点绕,但想想明白后,很不错。

用原文中的最后一句话来结尾:

arguments is not often used, a little quirky, but full of surprises and well worth getting to know!

展开更多 50%)
分享

猜你喜欢

JavaScript内置对象:arguments

Web开发
JavaScript内置对象:arguments

arguments对象

Web开发
arguments对象

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

ASP内置对象 Request对象 详解

ASP
ASP内置对象 Request对象 详解

javascript对象之window对象

Web开发
javascript对象之window对象

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

JavaScript 核心对象

Web开发
JavaScript 核心对象

JavaScript基本对象

Web开发
JavaScript基本对象

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

WPS如何让插入页码更加便捷

WPS如何让插入页码更加便捷

30个绝对优秀的JavaScript Web创意应用

30个绝对优秀的JavaScript Web创意应用
下拉加载更多内容 ↓