• 1.摘要
  • 2.概述
  • 3.原理
  • 4.应用

this关键字

每一个行为发生的时候,肯定会有一个发生这个行为的主体。在编程语言里面每一个定义的方法里,都会有一个this关键字,这个this关键不是由在那儿定义来决定的,而是由谁来执行的决定的。这是判断this关键。

概述

比如说吃饭这个方法它是由上帝来定义的,世界上所有的人来执行。吃饭这个行为发生的时候,主体就是在吃饭的这个人,也就是要有人执行吃饭这个行为。 有时候我们需要在一个行为(方法)里,能明确知道这个行为是谁来执行的,确切的说就是我要知道谁在吃饭。

function eatSomthing() { this.eat }

在编程语言里面每一个定义的方法里,都会有一个this关键字,这个this关键不是由在那儿定义来决定的,而是由谁来执行的决定的。这是判断this关键。

原理

比如:这个人是张三,那么吃饭的主体就是“张三”,

张三.eat();//这个吃饭里的this就是张三这个对象。

也就是判断(.)前面的对象是谁,那这个this就是谁。 但有的方法是直接执行的,前面没有点,就更没有执行对象,那就this关键是谁呢?

像alert方法,直接执行的,那alert方法里的this是谁呢?凡是可以像alert这样直接运行的方法,都是全局方法(全局方法叫函数),全局方法的执行,都是相当于前面省略掉window.,也就是说alert()相当于window.alert(),那这样直接运行的方法里的this关键字,肯定就是window了。

*注意:方法里的this表示的是那个对象,是由谁来执行决定的。和在那儿定义的没有关系。

补充:this表示的对象,是这个方法活动的"上下文"。所谓的"上下文",也就是表示当前的这些代码的活动范围,当前的活动(代码的执行)在那个对象上的发生的意思。

吃饭这个活动,是在张三这个对象上发生的,则张三是吃饭的下下文。在body里去查找的div元素,则body是这个查找活动的上下文。那这个this,就是这个方法运行活动的范围了。

方法里this当前这个方法运行的上下文,但上下文不仅限于是this(就是整体与个体的区别)。

应用

var innerHTML = 'outerWindow';

window.onload = function() {

var innerHTML = 'window';

var obj = {

innerHTML: 'obj',