arguments小结

函数的属性有name,caller,length.除此之外让人耐人寻味的就是创建出来的一个隐藏对象arguments。arguments 它存储了函数在调用时候实际传入的参数,它是一个‘像数组一样的对象’称之为伪数组,可以将其当作数组来用,因为他的引用和访问方式与数组一样(但它不是数组哦)!

console.log(arguments instanceof Array);     //false

这里来引入一个arguments的使用,鉴于初步了解。

如果用户传入的时函数那么就调用,如果是字符串就打印:


function Foo(){    for(var i=0; i<arguments.length; i++){   //循环遍历每一个传入的实参        if(typeof arguments[i]===‘function‘ ){  //判断是否是函数            arguments[i]();        }else if(typeof arguments[i]===‘string‘){            console.log(arguments[i]);        }else{            console.log(‘您输入的不是函数也不是字符类型~~~‘);        }    }}Foo(function(){    console.log(‘函数‘);});                              //函数Foo(‘字符串‘);                   //字符串Foo(1);                           //您输入的不是函数也不是字符类型~~~  

以上代码,调用时候传入得如果是函数那么则调用执行,如果是字符串那么则打印字符串内容,若非这两种类型,那么给出提示;

分析完上个案例,这里在引入一个,我认为比较经典的arguments案例。

1,写一个函数 J, 要求如果函数接收一个参数, 如果该参数是函数, 则将其加载到 onload 上;2,如果传递的是 一个字符串. 如果字符串是 # 开头, 那么获得页面中 id 等于该字符串的元素;3,如果该字符串是以. 开头, 则获得页面中 class 属性为该字符串的元素(数组)4,如果仅仅是一个名字字符串, 则返回标签名字为该字符串的元素
function J(){
            var a = arguments;
            if(typeof a[0]===‘function‘){
                window.onload = a[0];
            }else if(typeof a[0]===‘string‘){
                var firstChar = a[0].charAt(0);//获取实参的第一个元素的第一个字节
                if(firstChar===‘#‘){
                    return document.getElementById(a[0].substr(1));//返回获取到的dom节点(substr属性是截取字符串用法)
                }else if(firstChar===‘.‘){
                    //
                }else{
                    return document.getElementsByTagName(a[0]);
                }
            }
        }
    //给dom设置样式的封装
        function addStyle(nodes,styles){
            for(var k in styles){
                for(var i =0; i<nodes.length;i++){         nodes[i].style[k] = styles[k];
                }
            }
        }
  J(function () {      addStyle(J("div"),{          width:‘500px‘,          height:‘300px‘,          border:‘5px solid red‘})  });

在获取类名有兼容性问题,解决方案,下次补上。

时间: 2024-10-19 12:51:34

arguments小结的相关文章

js中arguments,caller,callee,apply的用法小结

<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <style type="text/css"> *{padding: 0;margin: 0;} #img{position: absolute;} </style> </head> <body> <img id="img" src=&quo

初学Java10:JavaScript小结(一)

JavaScript小结 1.JavaScript是什么?动态的,弱类型 (from W3School:http://www.w3school.com.cn/js/index.asp ) JavaScript 是属于网络的脚本语言! JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用. JavaScript 是因特网上最流行的脚本语言. 2.实现:<script type="text/javascript"><

高程5.7单体内置对象 5.8小结

内置对象的定义:由ECMAScript实现提供的, 不依赖于鹤环境的对象,这些对象在ECMAScript程序执行之前就已经存在了. 开发人员不必显式地实例化内置对象,因为它们已经实例化了. 前面介绍了大多数内置对象,如Object,Array和String.ECMA-262还定义了两个单体内置对象:Global和Math. 5.7.1 Global对象 没有全局变量或全局函数;所有在全局作用域中定义的属性和函数,都是Global(全局)对象的属性. 诸如isNaN(),isFinite(),pa

eclipse中使用javap工具小结

关于javap的功能,百度百科上是这么解释的: javap javap是jdk自带的一个工具,可以反编译,也可以查看java编译器生成的字节码,是分析代码的一个好工具. 简单明了,大多时候真正的开发环境为linux系统,但是在windows下开发的时候又不习惯dos窗口的化,eclipse为我们提供了 javap的详细使用: 我们能够在eclipse中使用javap工具,我们有必要了解一下在eclipse中的Variables这个东西.这个英文单词的意思是变量集合的意思,意思就是我们以某些简短的

MogileFS学习小结

大纲: 一.关于MogileFS 二.常见分布式文件系统 三.MogileFS基本原理 四.MogileFS的实现 一.关于MogileFS 当下我们处在一个互联网飞速发展的信息社会,在海量并发连接的驱动下每天所产生的数据量必然以几何方式增长,随着信息连接方式日益多样化,数据存储的结构也随着发生了变化.在这样的压力下使得人们不得不重新审视大量数据的存储所带来的挑战,例如:数据采集.数据存储.数据搜索.数据共享.数据传输.数据分析.数据可视化等一系列问题. 传统存储在面对海量数据存储表现出的力不从

Javascript基础篇小结

Javascript基础篇小结 字数9973 阅读3975 评论7 喜欢28 转载请声明出处 博客原文 随手翻阅以前的学习笔记,顺便整理一下放在这里,方便自己复习,也希望你有也有帮助吧 第一课时 入门基础 知识点: 操作系统就是个应用程序 只要是应用程序都要占用物理内存 浏览器本身也是一个应用程序 浏览器本身只懂得解析HTML 调用浏览器这个应用程序的一个功能绘制 1.javascript介绍 JavaScript操作DOM的本质是=获取+触发+改变 目的:就是用来操作内存中的DOM节点 修改D

CI加载流程小结

无聊,决定水一把. CI(CodeIgniter)是我最早接触的一个框架,到现在也只是用了其中一点零碎的方法.一直想对其流程做个小结,却总是因各种各样的“理由”挨着.看见别人图表齐上阵,没那耐心,就从代码说起吧,权当做个笔记,纪念一下. 看在线的用户手册,也知道,将CI下载下来(最新版本2.2.1),解压到机子上,比如www目录,可改个根目录名(原名CodeIgniter-2.2-stable太长),初步目录文件如下,当然这在是windows下面.    访问下,如localhost/ci/in

1、AJAX里面status的值代表什么 2、get post 的区别 3、怎样把对象转化成字符串 4、闭包、继承、原型、原型链 5 、http传输协议 6、arguments是什么

1.AJAX里面status的值代表什么     在JavaScript里面写AJax的时,最关键的一步是对XMLHttpRequest对象建立监听,即使用"onreadystatechange"方法.监听的时候,要对XMLHttpRequest对象的请求状态进行判断,通常是判断readyState的值为4且status的值为200或者304时执行我们需要的操作.以下记录了一些常用readState以及status的值及其含义 readyState 属性表示Ajax请求的当前状态.它的

phonegap研究小结

最近公司有一个用h5写的项目要求要套用phonegap框架,现在项目差不多快完成了,做一些关于这个框架的小结,主要介绍如何在这个框架下用ios原生的代码和js的一些操作 1.首先是如何使用这个框架我们是在别人的项目上改建的,先把相应的html文件放到对应的www的文件下面.如果加载不出来看看你的root文件下面是不是缺少index.html文件如果没有记得添加进去,你的项目默认的登录显示的那个文件复制一份改成index.html,不删除源文件. 2.js代用iOS的代码: 只要在js文件下的对应