【JS】JavaScript中的this

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,在本例中即为代码的第一行。

也可以通过运用call()或者apply()方法强制转换上下文环境

console.log(test.call(obj.prop));

输出:Aurelio De Rosa



你可能感兴趣的:(JavaScript)