代码奇遇

今天在写代码的时候遇到一种代码,在处理function的参数arguments的时候,错误的把当作一个Array处理了,尝试着去调用Array对应的原型对象的slice属性,结果报undifined错误,可见arguments并不是Array的孩子。怀着这个疑问,查看了arguments的constructor,发现arguments的constructor居然是Object.数组


那么若是咱们须要对arguments进行slice,解决方式有不少,原理都是讲arguments转化成数组就解决了,可是问题是,这样的描述,用什么样的代码写最为优美。选择call()方法是比较合适的,call(obj,[方法参数])方法使用来描述用别的对象来替代当前对象且调用对应的方法,例如,code

emptyArray = [], slice = emptyArray.slice
            alert(arguments.constructor)
            alert(slice.call(arguments,1));//slice是emptyArray对象的,这里至关于把emptyArray替换成arguments来调用slice。

遍历出数组中的全部元素,并对元素进行处理

var args = [1,2,3];
args.forEach(function(arg){alert(arg)})

|| 和 &&

alert(1||2)//1
alert(""||2)//2
/*
左边||右边 ,表示不是选左边就是选右边,左边没有(false),那么留下来的就是右边,若是左边有了(true)留下来的就是左边。[选了右边,就把||以前的一块儿擦掉,选了左边就把右边擦掉]
*/
alert(1&&2);//2
alert(""&&2);//""
/*
 与||正好相反
*/
相关文章
相关标签/搜索