调用函数有4种方式:
- obj.func(); //直接用对象调用,或直接方法调用
- func.call(obj,args);//参数列出,call可以改变函数运行的作用域
- func.apply(obj,[m,n......]);//参数数组,apply同样可以改变函数运行的作用域,与call区别在于,第二个参数用数组的方式传入
- func.bind() //bind()返回的是一个函数,需要bind()参数放绑定的对象,后面再加括号才执行
var name="wang",age=17;
var obj={
name:"zhang",
objAge:this.age,
myfun:function(){console.log(this.name+"年龄"+this.age)}
};
var db={name:"dema",age:99} ;
obj.myfun(); //zhang年龄undefined
obj.myfun.call(db); //dema年龄99
obj.myfun.apply(db); //dema年龄99
obj.myfun.bind(db); // ƒ (){console.log(this.name+"年龄"+this.age)}
console.log(obj.objAge); //17,此时this指向window