js中this的用法

来源:互联网 发布:mac微博客户端是什么 编辑:程序博客网 时间:2024/06/14 14:32

this是javascript中的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如:

function test(){this.x = 1;}
随着函数适用场合的不同,this的值会发生变化。但有一个总的原则,那就是this指的是,调用函数的那个对象。

1.全局环境中的this

var a = 10;alert(this.a);this.b  = 20;alert(b);c=30;alert(this.c);
全局环境中的this指向全局对象,全局对象在浏览器中指的是window对象,但是在node.js里面指的不是window对象哦~ 

2.构造器中的this

function Person(name,age){<strong>this</strong>.name = name;<strong>this</strong>.age = age;<strong>this</strong>.sayHello = function(){alert("Hello, " + this.name);}}var p1 = new Person("lily",20);

构造器中的this指的是新创建的对象。

3.函数中的this

function Person(name,age){this.name = name;this.age = age;this.sayHello = function(){alert("Hello, " + <strong>this</strong>.name);}}var p1 = new Person("lily",20);
函数里面的this指向函数的调用者,在这个例子中,调用sayHello函数的是对象p1。

4.new Function中的this

(function(){var f = new Function("alert(this)");f();})();function Foo(){this.bar = function(){var f = new Function("alert(this)");f();}}var foo = new Foo();foo.bar();
用new Function创建对象时,里面的this都是指的全局对象,即window对象。

5.eval的this  调用上下文中的this

(function(){eval("alert(this)");})();function Foo(){this.bar = function(){eval("alert(this)");}}var foo = new Foo();foo.bar();


0 0