全局变量声明 :
var num === window.num ;
函数的四种调用模式
根据函数内部this的指向不同,可以将函数的调用模式分成4种
1函数调用模式
2方法调用模式
3构造函数调用模式
4上下文调用模式(借用方法模式)
1)函数调用模式:
function fn(){
console.log(this);//指向window;
}
fn();
如果一个函数不是一个对象的属性而是被当作一个函数来进行调用,内部的this指向的是window;
2)方法调用模式
当一个函数被保存为对象的一个属性时,我们称之为一个方法。当一个方法被调用时,this被绑定到当前对象
var obj = {
sayHi:function(){
console.log(this);//在方法调用模式中,this指向调用当前方法的对象。
}
}
obj.sayHi();
主要看谁去调用,this就指向谁;
3)构造函数调用模式
构造函数new里面,this指向新建的那个对象;
4)上下文调用模式(方法借用,模式)apply与call
+ call方法可以调用一个函数,并且可以指定这个函数的this指向
所有函数都可以使用call进行调用,
参数1:指定函数的this,如果不穿则指向window;
第二个参数是函数的参数
+ apply方法,
与call方法类似,apply()方法接受的是一个包含多个参数的数组。而call()方法接受的是若干个参数的列表,(apply是数组,call则是若干参数)
伪数组转变成数组
var arrayLike = {
0:d,
1:o.
2:h,
length:3
};
()[]前面都是要结束的,所以上面结束要加分号不然报错
var newArr = [].slice.call(arrayLike);
求一个数组的最大值,
var arr = [12,32,43,524,5235,52,42344,52342]
var max = Math.max.apply(null,arr);