call 和 apply


call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。因为 JavaScript 的函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。

改变函数体内部 this 的指向
//call用法
function changeStyle(attr, value){
    this.style[attr] = value;
}
var box = document.getElementById('box');
window.changeStyle.call(box, "height", "200px");
//apply用法
window.changeStyle.apply(box, ['height', '200px']);
作者:薯条半价
链接:https://www.zhihu.com/question/20289071/answer/48775432
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
获取数组中的最大值和最小值
var maxNum = Math.max("5, 458 , 120 , -215")//458
//number 本身没有 max 方法,但是 Math 有
var numbers = [5, 458 , 120 , -215 ]; 
var maxNum = Math.max.call(Math,5, 458 , 120 , -215); //458,用call没什么意义因为参数不是数组可以直接用Math.max
//获取数组中的最大值和最小值
var maxNum = Math.max.apply(Math, numbers),   //458

bind()改变上下文环境之后是回调执行 apply & call 则会立即执行函数
var obj = {
    x: 81,
};
var foo = {
    getX: function() {
        return this.x;
    }
}
console.log(foo.getX.bind(obj)());  //81
console.log(foo.getX.call(obj));    //81
console.log(foo.getX.apply(obj));   //81

==2017/2/28==

转载于:https://www.cnblogs.com/papi/p/6527201.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值