// 将伪数组转化为真数组,并且有数组的方法
方式一: Array.prototype.slice.call(arguments)
方式二: [].slice.call(arguments)
// 选出数组中最大值
一般使用: Math.max(10,2,34,89,23) ==》可以得到最大值89
如果使用到数值数组中选出最大值:
方式一: Math.max.apply(null,arrName)
方式二: Math.max(...arrName)
// 合并数组
var a = [1,2,3];
var b = [4,5,6];
[].push.apply(a,b); // 借用数组的push方法 等价 a.push(4,5,6);
console.log(a); // [1, 2, 3, 4, 5, 6]
// 使用bind改变函数运行时的上下文时,bind方法返回一个函数,需要再次调用执行
function list() {
return Array.prototype.slice.call(arguments);
}
var newList = list.bind(undefined, 37); // 绑定函数
var list = newList(1, 2, 3); // 调用绑定函数
// 作用:
1.改变函数内部this指向
2.都是函数对象的方法,只有函数才可以调用
// 区别:
call,apply会立即执行原函数,bind会在调用到时执行原函数
call第一个参数作为this,第二个参数及后面多个参数作为原函数的参数传入,apply(只有两个参数)第一个参数作为this,第二个参数为一个数组,作为参数传入到原函数的形参中,bind(只有一个参数)即要绑定的this
如果不确定参数的个数则使用call,确定参数个数使用apply
function foo(a,b){
console.log(a+b);
}
foo.call(null,'海洋','饼干'); // 海洋饼干 这里this指向不重要就写null了
foo.apply(null, ['海洋','饼干'] ); // 海洋饼干
var fun = foo.bind(null);
fun('海洋','饼干'); // 海洋饼干