call apply arguments
- call apply arguments
call apply arguments
arguments是类数组对象,但他不是数组
function fun2(){
console.log(Array.isArray(arguments));
}
fun2();
-->false
<script type="text/javascript">
//call()和apply()
/* -这两个方法都是函数对象的方法,需要通过函数对象来调用-当对函数调用cal1()和apply()都会调用函数执行
-在调用cal1()和apply()可以将一个对象指定为第一个参数
此时这个对象将会成为函数执行时的this
- call()方法可以将实参在对象之后依次传递
- apply()方法需要将实参封装到一个数组中统─传递- this的情况:
1.以函数形式调用时,this永远都是window
2.以方法的形式调用时,this是调用方法的对象
3.以构造函数的形式调用时, this是新创建的那个对象
4.使用call和apply调用时,this是指定的那个对象
*/
</script>
<script type="text/javascript">
//在调用函数时,浏览器每次都会传递进两个隐含的参数;1.函数的上下文对象this
/* 2.封装实参的对象arguments
- arguments是一个类数组对象,它也可以通过索引来操作数据,也可以获取长度-在调用函数时,我们所传递的实参都会封 装到arguments中 */
//他不是数组
function fun(a, b){
//获取实参个数,跟定不定义形参没有关系
console.log(arguments.length);
//获取实参,
console.log(arguments[0]);
}
fun(10,20,"hrlo");
//-它里边有一个属性叫做callee,
// 这个属性对应一个函数对象,就是当前正在指向的函数的对象
</script>