前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS this指针的理解

JS this指针的理解

作者头像
dys
发布2018-04-02 17:38:10
1.8K0
发布2018-04-02 17:38:10
举报
文章被收录于专栏:性能与架构性能与架构

this是javascript的一个关键字,也是比较容易令人迷糊的一个概念

this的本质:当前对象的所有者

示例1

代码语言:javascript
复制
var x = 1;
function test() {
    alert(this.x);
}
test();

在之前的“JS执行顺序”文章中讲过,这个test函数会被先编译为一个全局变量,如

代码语言:javascript
复制
var test = function test() {
    alert(this.x);
};

所以这个this所属对象为全局对象,this.x 就是全局变量 x,alert弹出值为'1'

示例2

代码语言:javascript
复制
var x = 2;
function test() {
    alert(this.x);
}
var obj = {};
obj.x = 1;
obj.func = test;
o.func();

这个输出结果为'1',因为这里test被赋给了对象obj,this的所有者就是obj,this.x 也就是 obj.x

示例3

下面这个例子比较有迷惑性,是一个比较容易出错的情况

代码语言:javascript
复制
function test() {
    alert(this.title);
}
代码语言:javascript
复制
<input type="button" value="test" onclick="test()" title="i am button"/>

输出的结果:undefined

其实onclick="test()",相当于

代码语言:javascript
复制
function onclick(event){
test();
}

是一个全局的function,上面的 test方法也是全局的function,而全局变量中并没有定义 title,所以结果为 undefined

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档