码迷,mamicode.com
首页 > 其他好文 > 详细

this 关键字理解

时间:2015-07-12 12:40:41      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:

下面代码的运行结果是什么并做解释。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var fullname = ‘John Doe‘;
 
var obj = {
 
fullname: ‘Colin Ihrig‘,
 
prop: {
 
fullname: ‘Aurelio De Rosa‘,
 
getFullname: function() {
 
return this.fullname;
 
}}};
 
console.log(obj.prop.getFullname());
 
var test = obj.prop.getFullname;
 
console.log(test());

答案

代码输出:Aurelio De Rosa 和 John Doe

理由是,Javascript中关键字this所指代的函数上下文,取决于函数是怎样被调用的,而不是怎样被定义的

在第一个console.log(),getFullname()被作为obj.prop对象被调用。因此,当前的上下文指代后者,函数返回这个对 象的fullname属性。相反,当getFullname()被赋予test变量,当前的上下文指代全局对象window,这是因为test被隐式地作 为全局对象的属性。基于这一点,函数返回window的fullname,在本例中即为代码的第一行。

this 关键字理解

标签:

原文地址:http://www.cnblogs.com/xiaoheimao2008/p/4640726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!