对于每一个发生的动作,都必须有一个发生的主题。在编程语言中定义的每个方法中,都有this关键字,它不是由定义决定的,而是由执行它的人决定的。这是判断this关键。
例如,吃是上帝定义的一种方法,是世界上所有人都在执行的方法。当吃的动作发生时,主体是吃东西的人,也就是说,必须有人来做吃的动作。有时我们需要确切地知道是谁在操作(方法)中执行操作。具体来说,我们需要知道谁在吃东西
function eatSomthing() { this.eat() }
_PEOPLE A;
A.eatSomething(); //等价于A.eat();
例如,如果人是张三,那么这顿饭的主体就是“张三”,
张三。吃();//我是张三。
判断()。不管之前的物体是谁,这就是他。但有些方法是直接执行的,它们前面没有点,所以没有对象要执行,谁是关键呢?
它就像一个alert方法,直接执行,alert方法中的这个是谁?任何可以像alert那样直接运行的方法都是全局方法(称为函数),其执行与window.alert()相同。直接像这样运行的方法中的"this"关键字必须是window。
*注意,方法中的this指向对象,由执行它的人决定。它和这里的定义没有任何关系。
Add:由this表示的对象是方法活动的“上下文”。“上下文”指的是当前代码的活动范围,以及该对象上当前活动(代码的执行)的含义。
吃这个活动,就是在张三这个对象发生的,那么张三就是在吃下面的上下文中。要在主体中查找的div元素是查找活动的上下文。这是这个方法运行的活动范围。
这是方法当前运行的上下文,但上下文并不仅限于此(整体和个体之间的区别)。
var innerHTML = 'outerWindow';
window.onload = function() {
var innerHTML = 'window';
var obj = {
innerHTML: 'obj',
fn: function() {
alert(this.innerHTML);
}
}
obj.fn(); //输出结果obj var fn = obj.fn; //输出结果window fn() //此处window省略 //this关键字是谁,和这个方法在那个环境卫生里执行没关系密切。和.前面的主体有关 fn.fn(); //提示错误 }
想要系统学习JAVA推荐JAVA300集
Java300集零基础适合初学者视频教程https://www.bilibili.com/video/BV1oy4y1H7R6?spm_id_from=333.999.0.0



