有人知道吗?之前找不到这个问题,尽管它看起来很基本。
问问题
146 次
2 回答
3
(关键字)它不是完全隐式context
的,可以显式设置和更改。this
例如:
function test () {
alert(this);
}
test.call("Hello world");
使用字符串作为上下文调用该test
函数。
this
所以总而言之,除非你明确定义它,或者你在函数内部,否则你无法知道它是什么。
于 2009-11-14T19:27:11.973 回答
2
同一个函数会看到不同的值,this
具体取决于它的调用方式。有关详细信息,请参阅Crockford,但有四种情况:
- 作为一个简单的函数调用,它绑定到全局/窗口对象。
- 作为对象上的方法调用,它引用该对象。
- 通过关键字作为构造函数调用
new
,它是新实例化的对象,它继承自存储在函数自身prototype
属性中的对象。 - 由它自己的
apply
或call
方法调用,它是提供的第一个参数。
如果这些情况听起来很复杂、乏味且容易出错,那么更有理由避免依赖this
外部方法,无论如何它最有意义。
于 2009-11-14T21:01:41.050 回答