在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了
function Foo(){
this.name='kkk';
this.year=2019;
console.log(this);//window
console.log(this.year)//2019
}
Foo()
function Foo(){
this.name='kkk';
this.year=2019;
console.log(this); //Foo{name:'kkk',year:2019}
console.log(this.year)//2019
}
var a=new Foo();
console.log(a.name)//'kkk'
console.log(a.year)//2019
直接调用构造函数的this与new的对象的this不一样
var obj={
x:10,
fn:function(){
console.log(this);
console.log(this.x)
}
}
obj.fn();
//{ x: 10, fn: [Function: fn] }
//10
函数作为对象的一个属性,并且作为对象的一个属性被调用时,函数中的this指向该对象。
var obj={
x:10,
fn:function(){
console.log(this);
console.log(this.x)
}
}
f=obj.fn;
f();
//window
//undefined
fn函数被赋值到了另一个变量中,并没有作为obj的一个属性被调用,那么this的值就是window,this.x为undefined
网友评论