var role = {};
function test_func(name,sex){
this.name=name;
this.sex=sex;
}
// 显式传递this
// 函数.call可以显式的传递一个实例,函数中的this就是指这个实例
// 在这里this--->role
test_func.call(role,"leon","男");
console.log(role);
// 隐式传递this
var role1={
name:"leon",
test_func:function(){
// 谁调用这个函数 this就指谁
console.log(this);
},
};
role1.test_func();
// 强制传递this(强制传递的优先级高于隐式传递)
var func=function(){
// this指bind的对象
console.log(this.sex);
}.bind(role);
func();
func=function(){
console.log(this);
}
// .bind()返回一个新的函数对象
func2 = func.bind(role.name);
func();
func2.call(4);
func2();
优先级:强制传递>显示传递>隐式传递