一些小知识点-慢慢更新

call/apply

他俩都是修改函数内部的this指向的,只是call传递的参数是N个字符串,apply传递一个数组.
小技巧:

1.追加数组

var array1 = [12 , "foo" , {name "Joe"} , -2458];
var array2 = ["Doe" , 555 , 100];
方法一:array1.concat(array2);//常用方法
方法二: Array.prototype.push.apply(array1 , array2);//apply方法

2.获取数组最大/小值

var numbers = [5, 458 , 120 , -215 ];
Math.max.apply(Math,numbers);//使numbers也可以使用Math对象下的max方法

3.伪数组,eg.dom元素集(虽然长的像是数组,但是本身没有数组的方法),例如:

Array.prototype.forEach.call(els,function(item,index,array){
	console.log(item)
});//使用Array对象的forEach方法(els是所获取的dom数组)

var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));//伪数组应用Array下的所有方法,这样就可
以随便使用它上的方法啦

4.打印不确定个数的参数

function log(msg) {
    console.log.apply(console, arguments);
}
log(1); //1
log(1,2); //1 2

5.call/apply/bind

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 立即执行
原文地址:https://www.cnblogs.com/geekfeier/p/7721936.html