this关键字
计算机术语
每一个行为发生的时候,肯定会有一个发生这个行为的主体。在编程语言里面每一个定义的方法里,都会有一个this关键字,这个this关键不是由在那儿定义来决定的,而是由谁来执行的决定的。这是判断this关键。
内容简介
比如说吃饭这个方法它是由上帝来定义的,世界上所有的人来执行。吃饭这个行为发生的时候,主体就是在吃饭的这个人,也就是要有人执行吃饭这个行为。 有时候我们需要在一个行为(方法)里,能明确知道这个行为是谁来执行的,确切的说就是我要知道谁在吃饭。
function eatSomthing() { this.eat() }
_PEOPLE A;
A.eatSomething(); //等价于A.eat();
原理
比如:这个人是张三,那么吃饭的主体就是“张三”,
张三.eat();//这个吃饭里的this就是张三这个对象。
也就是判断(.)前面的对象是谁,那这个this就是谁。 但有的方法是直接执行的,前面没有点,就更没有执行对象,那就this关键是谁呢?
像alert方法,直接执行的,那alert方法里的this是谁呢?凡是可以像alert这样直接运行的方法,都是全局方法(全局方法叫函数),全局方法的执行,都是相当于前面省略掉window.,也就是说alert()相当于window.alert(),那这样直接运行的方法里的this关键字,肯定就是window了。
*注意:方法里的this表示的是那个对象,是由谁来执行决定的。和在那儿定义的没有关系。
吃饭这个活动,是在张三这个对象上发生的,则张三是吃饭的下下文。在body里去查找的div元素,则body是这个查找活动的上下文。那这个this,就是这个方法运行活动的范围了。
方法里this当前这个方法运行的上下文,但上下文不仅限于是this(就是整体与个体的区别)。
应用
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(); //提示错误 }
参考资料
最新修订时间:2024-10-23 08:56
目录
概述
内容简介
原理
参考资料