深入理解JavaScript原型和闭包 -- This用法
接着上一节讲的话,应该轮到“执行上下文栈”了,但是这里不得不插入一节,把this说一下。因为this很重要
在函数中this到底取何值,实在函数真正被调用执行的时候确定的,函数定义的时候确定不来
因为this的取值是执行上下文环境的一部分,每次调用函数,都会产生一个新的执行上下文环境。
this的取值,分为四种情况
情况1:构造函数
所谓构造函数就是用来new对象的函数,其实严格来说,所有的函数都可以new一个对象,但是有些函数的定义是为了new一个对象,而有些函数就需要另外注意,构造函数的函数名第一个字母大写(规则约定)例如Object、Array、Function
function Foo(){
this.name='renny';
this.year='20';
console.log(this);//Foo{name:"renny,year=20}
}
var f1=new Foo();
console.log(f1.name);//renny
console.log(f1.year);//20
以上代码中,如果函数作为构造函数用,那么其中的this就代表他即将new出来的对象
注意,以上仅限new Foo()的情况,即Foo函数作为构造函数的情况,如果直接调用Foo,而不是newFoo() ,情况就不太一样了
function Foo(){
this.name='renny';
this.year='20';
console.log(this);//window{top:window,windows:Window,location:location,exter}
}
foo();
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭