一些小知识点-慢慢更新
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 立即执行
笨鸟飞呀飞~