首页 > 代码库 > js基础知识总结:函数
js基础知识总结:函数
函数内部的属性:arguments 和this是函数内部的两个特殊对象arguments:function recursion(num){ if(num<=1){ return 1; }else{ return num*recursion(num-1); }}另一种写法:function recursion(num){ if(num<=1){ return 1; }else{ return num*arguments.callee(num-1); }}arguments:表示当前参数的数组arguments.callee 表示引用当前正在正在执行的函数,或者说是调用arguments.callee的函数的引用,arguments.callee给匿名函数提供了一种自我引用的方式var func=function(){ alert(func===arguments.callee);}func();//调用该函数,我们得出的结果是true从该例子我们可以看出func和arguments.callee对象的类型和值都相等。callee属性的初始值就是正在执行的Function对象caller: 返回一个对函数的引用,该函数调用了当前函数 this 对象: this对象引用的是window(windwo是一个对象,而且是js当中最大的一个对象 ,并且它是最外围的对象) alert(window);//[object window] alert(typeof window);//object window 是对象 类型是对象 表示全局 alert(this); // [object Window] this 目前表示的是window,因为在window的范围下 alert(typeof this);//object alert(this===window);//返回值为 true 在“全局”变量下的this 就是window window.color=‘红色的‘; function sayColor(){ //alert(this);// [object window] alert(this.color);//因为该函数 sayColor() 未赋值给一个对象 所以此处的this依然代表着window对象 } sayColor();// 调用的是window下的color var box={ color:‘蓝色的‘ }; box.sayColor=sayColor;将sayColor函数赋值给了 box对象的sayColor属性 /* 上边的代码其实就相当于 var box={ color:‘蓝色的‘, sayColor:function(){ //alert(this);// [object Object] alert(this.color); } }; */ box.sayColor();//此处执行的是box里边的this.color //结果是 蓝色的 --------------------------------------------<script type="text/javascript">function box(num1,num2){ return num1+num2;}//可以使用这种方式将sum函数转换成 box方法function sum(num1,num2){ return box.apply(this,[num1,num2]);//此处的this指的是window对象(将this换成window也是一样的),数组表示的是传递的参数}alert(sum(19,21));//返回的结果是40->函数apply: 语法:apply[[thisObj],[argArray]] 定义:应用某一个对象的一个方法,用一个对象替换当前对象 thisObj代表某一个对象 上述例子中这个对象是当前对象 this argArray表示用来替换当前对象的的对象的参数 数组上述例子的另一个中写法function sum2(num1,num2){ return box.apply(this,arguments);//arguments代表的是box函数中参数的数组}alert(sum2(10,10)); ->使用apply和call可以冒充另一个方法 apply与call实现的效果是一样的 call和apply不同的是 call中的参数是一个一个的,而apply则必须以数组的形式传递function sum(num1,num2){ return box.call(this,num1,num2);//注意参数的传递方式和apply的不同之处} alert(sum(10,10)); 冒充的作用:主要用于扩展函数赖以运行的作用域 /* var color=‘红色‘; var box={ color:‘蓝色‘ }; function sayColor(){ alert(this.color); } //使用call 冒充 window对象 sayColor.call(window);//红色 弹出的是window对象的 color sayColor.call(this);// 红色 弹出的样式window对象的color //使用call 冒充 box对象 sayColor.call(box);//蓝色 弹出的是 box对象下的color属性 */ 此时 可以看出 并没有给box对象添加 sayColor属性对象却可以执行出 sayColor的效果
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。