this指针

this对象是和执行上下文息息相关的一个对象,因此它也被称为执行上下文对象(context object),即激活当前执行上下文的执行上下文(an object in which context the execution context is activated)。

任何对象都可以作为执行上下文的this值,this是执行上下文的一个属性而不是某个变量对象的属性。(a this value is a property of the execution context, but not a property of the variable object.)

这个特性十分重要,因为跟变量对象不同,this值从来不会参与到标识符查询的过程,换句话说,this值是直接从执行上下文中得到的,而不会查询原型链,只有当进入执行上下文的时候,this值就已经一次确认了。

在ECMAScript中是不能给this赋值的,还是那句话,this不是变量。

在全局上下文中,this值就是指全局对象。

在函数上下文中,this的值可能是不同的,是通过调用表达式由caller提供的。

// the code of the "foo" function

// never changes, but the "this" value

// differs in every activation

function foo() {

alert(this);

}

// caller activates "foo" (callee) and

// provides "this" for the callee

foo(); // global object

foo.prototype.constructor(); // foo.prototype

var bar = {

baz: foo

};

bar.baz(); // bar

(bar.baz)(); // also bar

(bar.baz = bar.baz)(); // but here is global object

(bar.baz, bar.baz)(); // also global object

(false || bar.baz)(); // also global object

var otherFoo = bar.baz;

otherFoo(); // again global object

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • 原文:http://dmitrysoshnikov.com/ecmascript/javascript-the-c...
    jaysoul阅读 3,321评论 0 0
  • 没搞错吧!js写了那么多年,this还是会搞错!没搞错,javascript就是回搞错! ………… 在写java的...
    zhoulujun阅读 5,269评论 0 11
  • 题目 封装函数 f,使 f 的 this 指向指定的对象 。 输入例子 输出例子 分析 题目拆解 该题目的要求是:...
    Pines_Cheng阅读 4,927评论 0 4
  • 时间接近黎明, 太阳只给世界一支蜡烛。 支着它来回,由东至西的燃尽。 只不过 是一日光景。 我紧闭双眼,迎接光明。...
    灼虾阅读 1,183评论 0 0