匿名函数
/***************************************
* 匿名函数的this指向具有全局性
* 当this在函数内找不到时,会去全局查找
/***************************************/
name = "duck_99"
var duck1 = {
name: "duck_11",
funcA: function(){
return function(){
console.log(this.name);
}
}
}
var duck2 = {
name: "duck_22",
funcA(){ //函数名与变量相同的时候简写
return function(){
console.log(this.name);
}
}
}
duck1.funcA()(); //打印:duck_99
duck2.funcA()(); //打印:duck_99
console.log("-------------------------------")
普通函数
/***************************************
*普通函数的this指向当前定义的函数内部,
*但是当函数被其他对象调用时this指向调用者的内部
/***************************************/
name = "oooooooooo";
var dog = {
name: "小黑",
funcA: function(){
var name = "haha";
console.log(this.name);
}
}
dog.funcA(); //函数内的this指向调用者obj本身,这里打印:小黑
var funcB = dog.funcA;
funcB(); //函数内的this指向全局变量func调用者本身:打印:oooooooooo
console.log("-------------------------------")
箭头函数
/***************************************
* 箭头函数的this定义:
* 箭头函数的this是在定义函数时绑定的,不是在执行过程中绑定的。
* 简单的说,函数在定义时,this就继承了定义函数的对象。
/***************************************/
var person = {
name: "小明",
age: 23,
funcA: function(){
var name = "momo";
funcB = ()=>{
console.log(this.name); //打印:小明
}
funcB();
console.log(this.name); // 打印小明
}
}
person.funcA();
console.log("-------------------------------")