call、apply和bind方法

这三个方法,一般用于改变this的指向问题,如下代码所示

var obj1 = {
    
    
    name: "obj1",
    sayHello: function (x, y, z) {
    
    
        console.log(this.name + x + y + z);
    }
};

var obj2 = {
    
    
    name: "obj2"
}

obj1.sayHello.call(obj2, 1, 2, 3); //把obj1里sayHello方法给到了obj2,同时改变了this指向,指向obj2(call的第一个参数)
obj1.sayHello.apply(obj2, [1, 2, 3]);
obj1.sayHello.bind(obj2)(1,2,3); //bind只改变this指向,并不调用

call和apply的区别?

call和apply的区别在于参数上面,call中的参数是参数列表形式,apply中的参数是参数数组形式

利用apply的特点取到数组中的最小索引和最小值

//取数组中的最小值
var arr = [11, 343, 54, 5, 89, 90];
//console.log(Math.min(arr)); NaN
var minVal = Math.min.apply(null, arr);
var minIndex = arr.indexOf(minVal);
console.log(minVal, minIndex);

猜你喜欢

转载自blog.csdn.net/qq_38053677/article/details/107719472
今日推荐