JS里的this讲解

来源:互联网 发布:python官网中文版 编辑:程序博客网 时间:2024/05/21 04:20


JavaScript中this的使用

在JavaScript中this变量是一个令人难以摸清的关键字,this可谓是非常强大,充分了解this的相关知识有助于我们在编写面向对象的JavaScript程序时能够游刃有余。

对于this变量最要的是能够理清this所引用的对象到底是哪一个,也许很多资料上都有自己的解释,但有些概念讲的偏繁杂。而我的理解是:首先分析this所在的函数是当做哪个对象的方法调用的,则该对象就是this所引用的对象。

示例一、 
复制代码 代码如下:

var obj = {}; obj.x = 100; obj.y = function(){ alert( this.x ); }; obj.y(); //弹出 100 

这段代码非常容易理解,当执行 obj.y() 时,函数是作为对象obj的方法调用的,因此函数体内的this指向的是obj对象,所以会弹出100。

示例二、 
复制代码 代码如下:

var checkThis = function(){ alert( this.x); }; var x = 'this is a property of window'; var obj = {}; obj.x = 100; obj.y = function(){ alert( this.x ); }; obj.y(); //弹出 100 checkThis(); //弹出 'this is a property of window' 

这里为什么会弹出 ‘this is a property of window’,可能有些让人迷惑。在JavaScript的变量作用域里有一条规则“全局变量都是window对象的属性”。当执行checkThis() 时相当于window.checkThis(),因此,此时checkThis函数体内的this关键字的指向变成了window对象,而又因为window对象又一个x属性(’thisis a property of window’),所以会弹出 ‘thisis a property of window’。

上面的两个示例都是比较容易理解的,因为只要判断出当前函数是作为哪个对象的方法调用(被哪个对象调用)的,就可以很容易的判断出当前this变量的指向。

摘自:http://www.jb51.net/article/42257.htm

其实也就是说,this总是只想定义函数是所在的上一级。 
例如

var dd = {    xx:1,    zz = function(){        this; //指向的是dd        function xx = {            aa = 3,            this;  //指向的是zz            function ii = {                this ; //指向的是xx                }        }    }}

总结: 
其实this就是指对象本身,首相你要理解对象,想windows对象等等,他是object类型,而非function,number,string,undifine,null和boolean. 对象object包含上面的所有属性,这时候你在该对象里面调用this,就只该对象本身。

var xx=99;var obj={    xx:0,    func:function(){        this.xx;   //就是指obj.xx    0        xx;       //就是指window.xx    99        //所以一般不加this等等的都是直接调用的window对象的属性    }}

这样应该很明白了吧。

原创粉丝点击