自从接触javascript以来,对this参数的理解一直是模棱两可。虽有过深入去理解,但却也总感觉是那种浮于表面,没有完全理清头绪。
但对于this参数,确实会让人产生很多误解。那么this参数到底是何方神圣?
理解this
this是一个与执行上下文(execution context,也就是作用域)相关的特殊对象。因此,它可以叫作上下文对象(也就是用来指明执行上下文是在哪个上下 文中被触发的对象)。
任何对象都可以做为上下文中的this的值。在一些对ECMAScript执行上下文和部分this的描述中的 所产生误解。this经常被错误的描述成是变量对象的一个属性。 再重复一次:
this是执行上下文的一个属性,而不是变量对象的一个属性。 这个特性非常重要,因为与变量相反,this从不会参与到标识符解析过程。换句话说,在代码中当访问this的时候,它的值是直接从执行上下文中获取的,并不需要任何作用域链查找。this的值只在进入上下文的时候进行一次确定。
废话不多,先看一个板栗:
复制代码 代码如下:
var test = function(){};
test.prototype = {
foo:"apple",
fun:function(){
this.foo="banana";
}
};
var myTest = new test();
myTest.fun();
console.log(myTest.hasOwnProperty("foo")); //输出什么
console.log(myTest.hasOwnProperty("fun")); //输出什么
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8