this关键字
this可以用在构造函数之中,表示实例对象。除此之外,this还可以用在别的场合。但不管是什么场合,this都有一个共同点:它总是返回一个对象。简单说,this就是属性或方法“当前”所在的对象。
var person = {
name: '张三',
describe: function () {
return '姓名:'+ this.name;
}};
person.describe()// "姓名:张三"
上面代码中,this.name表示name属性所在的那个对象。由于this.name是在describe方法中调用,而describe方法所在的当前对象是person,因此this指向person,this.name就是person.name。
this主要有以下几个使用场合
1.全局环境
全局环境使用this,它指的就是顶层对象window。例如:
function f() {
console.log(this === window);
}
f() // true
注意:在严格模式下,普通函数内部 this 等于undefined。
2.构造函数
构造函数中的this,指的是实例对象。例如:
function Person(p) {
this.p = p;
};
var obj = new Person()
3.对象的方法
如果对象的方法里面包含this,this的指向就是方法运行时所在的对象。例如:
var obj ={
foo: function () {
console.log(this);
}};
Console.log(obj.foo()) // obj
bind方法
bind方法用于将函数体内的this绑定到某个对象,然后返回一个新函数。
var dog ={
name:'wangcai',
age:18,
wang:function(){
console.log(this)
}
}
var person = {name:'小明'}
var func = dog.wang.bind(person)
func();
//上面代码将person绑定到了func函数内部