//js杂谈 //主要想到什么就写下来 //测试的版本还是chrome 多少忘了 //第一个arguments //第一个作用 var toString={}.toString; var slice=[].slice; function aa(){ console.info(arguments.callee);//返回的是这函数aa引用 //下面两个证明他是非常像数组 console.info(arguments); console.info(arguments.length); //为什么不是数组呢 console.info(toString.call(arguments));//[object Arguments] 到此如何 //转化为数组//突然想到为什么能转化数组- -,写着写着就想到了这个 console.info(slice.call(arguments)); console.info(toString.call(slice.call(arguments)));//[object Array] } aa(); //有什么用呢,递归有用 //1-n的乘法 function bb(n){ if(n==1){ return 1; } return n*arguments.callee(n-1); } console.info(bb(5));// 是不是特别像数组 但不是真正的数组 //还有strict mode ,会被禁用,不过严格模式在火狐下会有bug //第二个 看过我以前写的博客的朋友,都应听到类数组这个东东 //像数组的对象 aa("a","b","c","d"); //好吧我们将其变为真的数组 //我记得在数组总结中有这样的方法slice //当然根据arguments可实现像java这样的重载功能 //就是根据arguments参数长度,和其值执行不同的操作 //不地感觉怎么就是感觉不妥 = = //第二个就是call 与apply //二者有一个不同,就是第一个要一个一个的传参,第二个可以传个arguments //传参不是这两个函数的真面目 //可以随时函数执行的上下文环境 是不是很厉害 var x="window"; var obj1={ x:"xx", xxxx:window.alert, xx:function(){ alert(this.x); }, xxx:function(){ //alert(this);//object alert(x); } }; var obj2={ x:"xx2", xx:function(){ alert(this.x); }, xxx2:function(){ alert(x); } }; //看变化 obj1.xx(); obj1.xx.call(this); obj1.xx.call(obj2); //再来三个,有什么差别 //obj1.xxx(); //obj1.xxx.call(this); //obj1.xxx.call(obj2); //弹出来都是window //alert方法在window,所以这个上下文 //上下文环境由调用时决定 //感觉也可以离解为一个方法里又包了一个alert函数,由闭包的意思,所以上下文为window //若有错误请指出 var a=window.alert; console.info(a); //a.call(obj1,x);//我想是js原生的一些方法不允许修改,想证明就是不行呢 //到此结束
相关推荐
1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为方法的属性,那它们的使用...
理解Javascript函数形式参数与arguments
JavaScript 中通过call或者apply用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。简单的说就是改变函数执行的上下文,这是最基本的用法。两个方法基本区别...
主要介绍了javascript利用apply和arguments复用方法,有需要的朋友可以参考一下
apply第一个参数传对象,参数可以是数组或者arguments 对象。 这两个方法通常被用来类的继承和回调函数: 作用一、类的继承: 先来看这个例子: 代码如下: function Person(name,age){ this.name = name; this.age=...
在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments Arguments 该对象代表正在执行的函数和调用它的函数的参数。 [function.]arguments[n] 参数function :选项。当前正在执行的 Function 对象...
主要介绍了Javascript中的arguments与重载介绍,本文讲解了Javscript 重载、Javascript arguments不是一个数组等内容,需要的朋友可以参考下
主要介绍了JS中call/apply、arguments、undefined/null方法详解的相关资料,需要的朋友可以参考下
ECMAScript中的函数并不介意传递的参数有多少,也不介意是什么类型。由于JavaScript允许函数有不定数目的参数,所以我们需要一种机制,可以在 函数体内 ...这篇文章将详细介绍Javascript中的arguments对象和使用方法。
在一些jQuery插件中经常看到类似 callback.call(xxx,xxx) 虽然看到书上有介绍 说call和apply函数可以改变作用域,但还是无法非常透彻的理解改变作用域主要是为了解决什么问题,有没有替代方案,或者 这2个函数主要...
arguments.callee 关于callee的解释:callee 是 arguments 对象的一个属性。可以用于引用该函数的函数体内当前正在执行的函数。这在函数的名称是未知时很有用,例如在没有名称的函数表达式 (也称为“匿名函数”)内...
主要介绍了javascript内置对象arguments,实例讲解arguments是什么怎么用,需要的朋友可以参考下
JavaScript中arguments的使用方法详解 js这是一门弱语言,不像其他语言如c,java等,有严格的规范, 所以现在也流传着一种说法,js本来就不是一种语言; 说回arguments,它是js中函数内置的一个对象,而执行函数...
apply和call的区别在哪里 2. apply的其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于apply和call的定义,然后用示例来解释这两个方法的意思和如何去用. apply:方法能劫持另外一个对象的...
本文实例分析了JavaScript函数apply()和call()用法与异同。分享给大家供大家参考,具体如下: JavaScript的函数是对象,因此有属性和方法。每个函数都包含两个属性:length和prototype,每个函数都包含两个非继承而...
JavaScript深入之类数组对象与argumentsJavaScript深入系列第十三篇,讲解类数组对象与对象的相似与差异以及arguments的注意要点类