在javascript中,如何在不调用函数的情况下判断函数绑定的对象(即其'this')?

时间:2009-11-14 19:24:27

标签: javascript function this

有人知道吗?以前找不到这个问题,即使它看起来很基本。

2 个答案:

答案 0 :(得分:3)

contextthis关键字)并非完全隐式,可以明确设置和更改

例如:

function test () {
  alert(this);
}

test.call("Hello world");

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

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

答案 1 :(得分:2)

相同的函数会看到this的不同值,具体取决于它的调用方式。有关详细信息,请参阅Crockford,但有四种情况:

  1. 作为一个简单函数调用,它绑定到全局/窗口对象。
  2. 作为对象的方法调用,它引用该对象。
  3. 通过new关键字作为构造函数调用,它是新实例化的对象,它继承自存储在函数自己的prototype属性中的对象。
  4. 由其自己的applycall方法调用,它是第一个提供的参数。
  5. 如果这些案例听起来复杂,繁琐且容易出错,那么就更有理由避免在方法之外依赖this,无论如何它都是最有意义的。