call() 和 apply() -this的情况
原创wg_iGBFcBFB 博主文章分类:js 基础 ©著作权
©著作权归作者所有:来自51CTO博客作者wg_iGBFcBFB的原创作品,请联系作者获取转载授权,否则将追究法律责任
function fun(a,b){
console.log("a = "+ a);
console.log("b = "+ b);
alert(this);
}
var obj= {
name:"obj",
sayName:function(){
alert(this.name);
}
};
/**
* call() 和 apply()
* -这两个方法都是函数对象的方法 需要通过函数对象来调用
* -当对函数调用call() 和 apply() 都会调用函数执行
* 在调用call() 和 apply() 可以将 一个对象指定为第一个参数
* 此时 这个函数将会成为函数执行时的this
*
* call() 方法可以将实参在对象之后依次传递
* apply() 方法需要将实参封装到一个数组中统一传递
*
* -this的情况
* 1 以函数形式调用时, this 永远都是window
* 2 以方法的形式调用时, this 是调用方法的对象
* 3 以构造函数的方法调用时,this 是新创建的那个对象
* 4 使用 call 和 apply 调用时,this 是 指定的那个对象
*/
// fun.call(obj,2,3)
fun.apply(obj,[2,3])
var obj2= {name:"obj2"};
//fun() // [object Window]
// fun.call(); // [object Object]
// fun.apply(); //[object Window]
//fun.call(obj); //[object Object]
//fun.apply(obj2); //[object Object]
// obj.sayName.apply(obj2);
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
call和apply和bind的区别
在 javascript 中,call 和 apply 都是为了改变
javascript 数组 函数体 -
javascript call apply 和arguments
call apply argumentscall apply argumentscall apply argume
javascript js 数组 函数对象 调用函数 -
simulink模块转Python
目录1. 概要2. Simulink模块的数据类型属性2. Simulink single模块3. single函数实现类型转换4. 确认是否实现了单精度处理5. 代码中有何差异?6. 大杀器?1. 概要 用Matlab/Simulink自动代码生成工具生成代码中,缺省的浮点数据类型为double类型。但
simulink模块转Python matlab 开发语言 simulink 自动代码生成