【发布时间】:2014-03-04 22:35:17
【问题描述】:
我正在努力提高我的 JavaScript 技能,并且我知道调用函数有四种基本方法——它们改变了 this 的定义方式。我感兴趣的两个是基本的两个:
- 作为函数调用
- 调用作为方法
这很好。第一个,this 将引用window 对象:
function doSomething() {
console.log(this);
}
doSomething(); // window is logged
第二个this 将引用它正在从内部执行的对象:
var t = {
doSomething: function () {
console.log(this);
}
};
t.doSomething(); // t is logged
这一切都很好。但是,是否正确地说,在这两个调用方法中,this 总是会返回包含该方法的对象(如果这有意义的话)?
在第一个示例中,doSomething() 实际上是在 window 对象中定义的 - window 对象的属性也是如此,即使我们没有定义它(或引用它)。
那么,难道不能说实际上作为函数的调用就是作为方法的调用吗?还是不行?
【问题讨论】:
-
参考:使用
'use strict';,第一个示例将记录undefined。 -
它只是关于
this指针。如果你在object中声明一个函数,那么我们可以说它是一个方法调用,因为函数现在是对象的一部分,它被定义为方法。此外,this在这种情况下指向对象。如果您在窗口中(或不在对象内)声明一个函数,那么它的函数调用,因为现在this指向窗口。
标签: javascript invocation