JavaScript中的this机制
JavaScript有自己的一套this机制,在不同情况下,this的指向也不尽相同。
全局范围
console.log(this); //全局变量
全局范围使用this指向的是全局变量,浏览器环境下就是window。
注:ECMAScript5的strict模式不存在全局变量,这里的this是undefined。
函数调用中
function foo() {
console.log(this);
}
foo(); //全局变量
函数调用中的this也指向全局变量。
注:ECMAScript5的strict模式不存在全局变量,这里的this是undefined。
对象方法调用
var test = {
foo: function () {
console.log(this);
}
}
test.foo(); //test对象
对象方法调用中,this指向调用者。
var test = {
foo: function () {
console.log(this);
}
}
var test2 = test.foo;
test2(); //全局变量
不过由于this的晚绑定特性,在上例的情况中this将指向全局变量,相当于直接调用函数。
这点非常重要,同样的代码段,只有在运行时才能确定this指向
构造函数
function Foo() {
console.log(this);
}
new Foo(); //新创建的对象
console.log(foo);
在构造函数内部,this指向新创建的对象。
显式设置this
function foo(a, b) {
console.log(this);
}
var bar = {};
foo.apply(bar, [1, 2]); //bar
foo.call(1, 2); //Number对象
使用Function.prototype的call或者apply方法是,函数内部this会被设置为传入的第一个参数。
相关文章
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
这篇文章主要介绍了JavaScript字符串对象replace方法实例,replace方法用于字符串替换,同时支持正则表达式替换,需要的朋友可以参考下2014-10-10
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
我们知道 Boolean(value) 是把值转换成Boolean类型,Nnumber(value) 是把值转换成数字(整型或浮点数),而 String(value) 是把值转换成字符串,需要的朋友可以了解下2012-12-12
Javascript常用运算符(Operators)-javascript基础教程
Javascript常用运算符(Operators)-javascript基础教程...2007-12-12
Javascript学习笔记之 对象篇(四) : for in 循环
如同 in 运算符一样,使用 for in 循环遍历对象属性时,也将往上遍历整个原型链。2014-06-06


最新评论