用function定义的函数里面的this指向是不明确的,只有在调用(解释)的时候才会确定this指向,即谁调用this就是谁。
let student = {
id:1001,
name:'张三',
age:19,
//getName:function(){}
getName(){ //省略了function的写法
return this.name;
}
}
console.log(student.getName()); //输出 张三
let student1 = {
id:1002,
name:'李四',
age:18
}
student1.getName = student.getName;
console.log(student1.getName()); //输出 李四
let getName = student.getName;
console.log(getName()); //输出 空,因为没有调用的对象,默认为window
var name = '地哥';//window
let student = {
id:1001,
name:'张三',
age:19,
//getName:function(){}
getName(){ //省略了function的写法
return this.name;
}
}
let getName = student.getName;
console.log(getName()); //输出 地哥
func.call (context,参数)
执行函数的时候,对象会传入到这个context,函数里面的this就是传入的这个context。
浏览器有这么一个规定,如果传入的context是undefined那么默认为当前浏览器(window)。
getName.call(student); //输出 张三
getName.call(student1); //输出 李四
getName.call(undefined); //输出 地哥