首页 > 代码库 > 函数深入理解---函数的内部属性arguments和this
函数深入理解---函数的内部属性arguments和this
argumentsfunction say(num){ /* 在函数对象中有一个属性叫做arguments,通过这个属性可以获取相应的参数值,这个属性 是一个数组,其实就是传递进来的参数 */ console.log(arguments.length); for(var i=0;i<arguments.length;i++){ console.log(arguments[i]); } console.log(num);}/* 在arguments这个对象中有一个callee的方法,arguments.callee(arg) 可以反向的调用*///say(1,2,3);//此时和函数名耦合在一起//return num * factorial(num-1);//以下就实现了函数名的解耦合,在js中通常都是使用这种方式做递归function factorial(num){ if(num<=1){ return 1; }else{ return num*arguments.callee(num-1); }}/* 以上是一个求阶乘的函数,以上递归调用的函数名称和原有函数名耦合在一起了 如果将来这个函数名称更改之后递归调用就会失效*/var cf = factorial;//此时不会报错console.log(cf(5));factorial = null;//此时由于cf这个函数依然使用factorial这个名称来调用,但是factorial已经指向null了,所以就会报错//递归调用就会失效console.log(cf(5));this
/*当需要创建一个类的时候,设置类的属性和方法需要通过this关键字来引用但是特别注意:this关键字在调用时会根据不同的调和对象变得不同*/var color = ‘red‘;function showColor(){ console.log(this.color);}//创建了一个类,有一个color的属性和一个show的方法function Circle(color){ this.color = color; this.showColor = showColor;}var c = new Circle(‘yellow‘);//使用c来调用showColor 方法,等于调用了showColor()方法//此时的this是c,所以color就是yellowc.showColor();//yellow//此时调用的对象等于是window,showColor的this就是window,所以就会找window中colorshowColor(); //red
函数深入理解---函数的内部属性arguments和this
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。