函数的声明和冒充
要了解call和apply就要从JS的函数开始说明,函数的声明包括三种方式
<span style="font-size:18px;">一般的声明方法 function box(num1,num2){ return num1+num2; } alert(box(1,3));//4 //使用变量初始化函数 var box=function(num1,num2){ return num1+num2; }; alert(box(1,3));//4 //使用Function构造函数 该方法是不推荐使用 var box=newFunction('num1','num2','returnnum1+num2'); alert(box(2,3));<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span></span>
函数也可以看做是一个特殊的对象,表示的是对象中的方法。而每一个声明的函数都包括了一个属性prototype,这个属性有两个方法就是call和apply,也就是所说的对象冒充。对象冒充可以理解为改变函数的作用域。下面来看一个例子。
<span style="font-size:18px;">var color='red'; //全局变量,color是全局变量window的属性 var box={ color:'blue',//这里的color是box的属性 } function sayColor(){ alert(this.color); //申明一个函数 } sayColor(); //如果直接的调用函数结果为red。因为其中的this表示的window sayColor.call(box); //使用call进行对象冒充,其中的box其实表示的是sayColor()函数的作用域是box,这样在调用函数是其中的this表示的就是box</span>
小结
对象冒充这一部分在JS中很多地方有有应用,理解清楚应用的原理还是很有必要的,以上是结合视频数部分的实例和理论知识理解到的,大家有不同的见解请指教!
时间: 2024-10-06 19:24:07