javascript中this的用法----个人见解
this在javascript里面一直是让人比较纠结的一块,特别是混在在复杂对象、继承、函数里面,还有一些call、apply这些变态的函数,更是让人头疼不已。
本文只是我个人对this的一些总结,分享给大家,只求你一看能有收获。具体内容可能有偏差,也可能比较肤浅,敬请大家留言交流指正。
首先,我认为,理解js里面的this,首先是理解this这个东西。相信很很多人和我一样,只知道this这样用,那样用,却忽略了一个最基本的事实:this其实指的就是一个对象。一个对象的代名词,不是指一个字符串,也不是一个函数等等。仅仅是一个对象。
基本含义:this 对象 返回“当前”对象。在不同的地方,this 代表不同的对象。也就是所谓的this所代表的对象要看实际运行时候的上下文环境。
我今天也正好就单单从“this只是指向对象”这个思路来展开,下面通过几个简单例子来看一下几种情况,然后进行简单的分析:
return this;
}
console.log(a()==window) //true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
var
person={ name: "123" , returnThis: function (){ return
this ; } } var
man={ name: "456" , getNowThis: this , sayThis1:person.returnThis(), sayThis2:person.returnThis } console.log(man.sayThis1); //person 这里在赋予sayThis1的值时候,returnThis方法已经运行, // this值已经确定, 指向returnThis所在的环境里面的this console.log(man.sayThis2()); //man 这里在赋予sayThis2的值时候 ,只是把returnThis所代表的 // 函数赋予给sayThis2,所以最后在运行man.sayThis2()函数的时候, // 实际上运行的是return this,故this指向man //这里,主要把person对象returnThish和returnThish()分别赋予给man对象 |
1 |
|
1
2
3
4
5
6
7
8
9
10
11 |
var
arr=[ function (){ return
this ; } , 2, 3, 4 ] console.log(arr[1]) //2 console.log(arr[0]()) // arr 得到的是这个数组,说明this指向的是这个数组本事 arr[0]()==arr // true 证实了this等于这个数组 arr[0]()[1] //2 this可以正常当做数组也使用 |
1
2
3
4
5
6
7
8
9
10
11
12
13 |
function
Person(){ this .age=25; this .title= "title" ; this .sayThis= function (){ return
this ; } } var
person1=<span style= "color: rgb(255, 0, 0);" > new </span> Person(); Person.age // undefined person1.age // 25 person1.sayThis() .title // "title" person1.sayThis()==Person // fasle person1.sayThis()==person1 // true |
(3)执行构造函数里面的代码(为这个新对象添加属性)
(4)返回新对象。
上面4条过程来源于javascript高级程序设计相关内容。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。