JavaScript内置对象:arguments

2016-02-20 00:56 1 1 收藏

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

【 tulaoshi.com - Web开发 】

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

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

(本文来源于图老师网站,更多请访问https://www.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方法。

创建带预置参数的函数:

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

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

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

来源:https://www.tulaoshi.com/n/20160220/1632877.html

延伸阅读
标签: Web开发
公司要求我在一个办公系统上加上提示功能, 我研究了很久,尝试了很多种方法.使用window.open来定时提示, 可是不过多久,客户就不耐烦得说,弹出窗口太繁了.于是我想到了用CreatePopup()的方法,不过问题来了,既然是一个办公系统,要考虑到兼容性问题,不考虑到网景浏览器,我们得考虑 IE 5.0 和 IE 5.5的问题.IE 5.0不支持CreatePopup的方法,还是只...
标签: Web开发
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
标签: Web开发
1)使用构造函数创建对象的实例 在JAVASCRIPT中构造函数和其它面向对象的语言一样,不可以直接调用,在用 new 关键字创建一个对象时自动的调用. 以下是JAVASCRIPT中使用构造函数的新示例。 var myObject = new Object(); // 创建没有属性的通用对象。var myBirthday = new Date(1961, 5, 10); // 创建一个 Date 对象。var myCa...
标签: Web开发
本章描述了文档及其关联对象 document、Layer、Link、Anchor、Area、Image 和 Applet。 表 5.1 本章用到的对象总览。 表 5.1 文档对象 对象 描述
标签: Web开发
JS中定义类的方式有很多种: 1、工厂方式   function Car(){    var ocar = new Object;    ocar.color = "blue";    ocar.doors = 4;    ocar.showColor = function(){     doc...

经验教程

924

收藏

17

精华推荐

Javascript教程:delete删除对象

Javascript教程:delete删除对象

291960297

JavaScript中的Function对象

JavaScript中的Function对象

八零兴伟

javascript时间对象的练习

javascript时间对象的练习

我的男友是黄瓜

微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部