这三个方法,一般用于改变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);