this表示对当前对象的一个引用,不是固定不变的,会随着执行环境上下文改变而改变。
记住以下this的总结,这是重点!!
-
在方法中(该方法不是由箭头函数定义的),this表示该方法所属的对象;
-
如何单独使用,this表示全局对象;
-
在函数中,this表示全局对象;
-
在函数中,在严格模式下,this是未定义的(undefined);
-
在事件中,this表示接受事件的元素;
-
call( )、apply( )可以将this引用到任何对象;
有时候分不清方法还是函数,这里记一下~~
方法和函数的区别:
首先我们通过例子先来理解一下方法和函数的区别:
例子1:
//例子1:
var person = {
name:'leaf';
age:26;
getName:function(){
console.log(this.name);
}
}
person.getName();//leaf
getName属性是一个方法,所属的对象是person。即getName属性属于person的对象方法。getName不能单独引用,只能通过对象来调用,比如person.getName( )。
例子2:
//例子2:
function demo(){
console.log("我是函数",this);
}
demo();
上边demo就是一个函数,它具有独立的功能,能单独引用demo( )。
结合我们开头关于this的总结:在方法中,this表示该方法所属的对象;在函数中,this表示全局对象;
在例子1中this表示person这个对象,在例子2中this表示全局对象window。
再来看一个例子:
var name = "windowsName";
var person = {
name: 'leaf',
getName: function () {
console.log(this.name);
}
}
var f = person.getName();
f();
//windowsName
将person对象的方法getName( )赋值给变量f,上边的代码等价于:
var name = "windowsName";
var person = {
name: 'leaf',
getName: function () {
console.log(this.name);
}
}
var f = function getName(){
console.log(this.name);
}
f();
//windowsName
所有f是一个函数,在函数中,this表示全局变量,所以输出打印windowsName。
方法和函数的区别总结:
-
方法和对象绑定在一起的,不能单独引用,只能通过对象来调用;
-
函数具有独立功能,能单独引用;
-
在方法中,this表示该方法所属的对象;在函数中,this表示全局对象;