天天看点

js self = this的解释

  错误:name 和 age都没有定义。

  正确。

  错误:name 和 age 未定义。

  通过 var self = this,正确。

  错误:sayHello未定义。

  

  每个函数都有属于自己的this对象,这个this对象是在运行时基于函数的执行环境绑定的,即在全局对象中,this指向的是window对象;在自定义函数中,this对象指向的是调用这个函数的对象,也就是说,this指向的是调用执行环境的那个对象。如果是在函数嵌套环境中,this指代的是调用外部函数或者内部函数的执行环境的对象。

  那么这里可能又会出现新的疑问:为什么self.name 和 self.age是正确的呢?

  其实这又涉及到另一个话题:实例成员与局部成员。我们创建构造函数的意义就是要用它来创建实例,那么所有属于实例的成员都需要用this来定义;而只有那些不属于实例的成员才不会用this定义;当然,用this定义了方法以后,在函数作用域内部要调用此方法时,就需要加上this了。

  错误:name 和 age未定义。

继续阅读