标签:
下面代码的运行结果是什么并做解释。
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,在本例中即为代码的第一行。
标签:
原文地址:http://www.cnblogs.com/xiaoheimao2008/p/4640726.html