使用变量创建函数
创建一个匿名函数赋值给变量
传的参数
也可以是一个对象
也可以传函数
qubie\
函数的返回值可以是任意的数据类型
立即执行函数
函数变成的对象属性,调用函数就叫调用方法
枚举对象中的属性
作用域
函数作用域
var a;
window.fun()
window.a;
函数的方法
call()和apply(),都是函数对象的方法需要通过函数对象来调用
function fun(){
alert("我是fun函数")
}
fun();//函数
fun//对象
调用call和apply();都会执行函数
fun.call();和funapply();和fun();效果一样
不同的是调用call();和apply();可以将一个对象指定为第一个参数
此时这个对象会成为函数调用的this
function fun(){
alert(this.name)
}
var obj1 ={name:"obj1"};
var obj2 ={name:"obj2"};
fun();//函数形式调用this是windos
fun.call(obj1)//打印出obj1//fun.apply();
//指定谁,参数是谁this就是谁
call()方法可以将实参在对象之后依次传递
fun.call(obj,2,3);
fun.aplly方法需要将实参封装到数组统一传递
fun.apply(obj,[2,3])
function fun(){
alert(this.name);
};
var obj1 ={
name:"obj1",
sayName:function(){
alert(this.name);
}
};
var obj2 ={name:"obj2"};
obj1.sayName.apply(obj2);
//结果为obj2,参数是谁obj就是谁
function fun(a,b){//给函数传两个参数
console.log("a="+a);
console.log("b="+b);
};
var obj1 ={
name:"obj1",
sayName:function(){
alert(this.name);
}
};
var obj2 ={name:"obj2"};
//fun.call(obj1,2,3,);
fun.apply(obj1,[2,3])
//console.log(obj1);
//输出结果为a=2
// b=3
this情况:
1 以函数调用时永远是windos,
2 以方法调用时,this是方法调用的对象
3 以构造函数的形式调用时,this是新创建的那个对象
4 使用call跟apply调用时 ,this是指定的对象