首页 > 网站 > WEB开发 > 正文

关于this指向问题的总结【转自秘密花园】

2024-04-27 14:06:22
字体:
来源:转载
供稿:网友

关于this指向问题的总结【转自秘密花园】

this的工作原理

javaScript 有一套完全不同于其它语言的对this的处理机制。 在种不同的情况下 ,this指向的各不相同。

第一种:全局范围内

this;

当在全部范围内使用this,它将会指向全局对象window。

第二种:函数调用

foo();

这里this也会指向全局对象window。

ES5 注意:在严格模式下(strict mode),不存在全局变量。 这种情况下this将会是undefined

第三种:方法调用

test.foo(); 

这个例子中,this指向test对象。

第四种:调用构造函数

new foo(); 

如果函数倾向于和new关键词一块使用,则我们称这个函数是构造函数。 在函数内部,this指向新创建的对象。

第五种:显式的设置this

function foo(a, b, c) {}var bar = {};foo.apply(bar, [1, 2, 3]); // 数组将会被扩展,如下所示foo.call(bar, 1, 2, 3); // 传递到foo的参数是:a = 1, b = 2, c = 3

当使用Function.PRototype上的call或者apply方法时,函数内的this将会被显式设置为函数调用的第一个参数。

因此函数调用的规则在上例中已经不适用了,在foo函数内this被设置成了bar。第五种也是常见的call和apply用法的基本功能。

经常会遇到,却经常出错,总结一下,偶尔温故使用。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表