2009-11-14 61 views

回答

3

context(在this关键字),这不是一个完全隐含,它可以设置和改变明确

例如:

function test() { 
    alert(this); 
} 

test.call("Hello world"); 

test函数被调用的字符串作为上下文。

所以总而言之,除非你明确定义它,否则你不知道什么是this,或者你在函数内部。

+0

啊哈,无赖。 (这里) – prismofeverything 2009-11-14 19:38:03

2

相同的功能将看到不同的值this取决于它如何调用。有关详细信息,请参见Crockford,但有四种情况:

  1. 作为一个简单函数调用,它被绑定到全局/窗口对象。
  2. 作为对象调用方法,它引用该对象。
  3. 通过new关键字作为构造函数调用,它是新实例化的对象,它继承自存储在函数自己的prototype属性中的对象。
  4. 由自己调用applycall方法,它是提供的第一个参数。

如果这些情况听起来复杂,繁琐,而且容易出错,更有理由避免依赖this以外的方法,它是很有道理的反正。

相关问题