1+ < script type ="text/javascript ">
2+
3+ //当函数作为对象的方法被调用时,this 指向该对象:
4+
5+ var obj = {
6+ a : 1 ,
7+ getA : function ( ) {
8+ alert ( this === obj ) ; // 输出:true
9+ alert ( this . a ) ; // 输出: 1
10+ }
11+ } ;
12+
13+ obj . getA ( ) ;
14+
15+
16+ //在浏览器的JavaScript 里,这个全局对象是window 对象。
17+ window . name = 'globalName' ;
18+
19+ var getName = function ( ) {
20+ return this . name ;
21+ } ;
22+ console . log ( getName ( ) ) ; // 输出:globalName
23+
24+ //或者:
25+ window . name = 'globalName' ;
26+
27+ var myObject = {
28+ name : 'sven' ,
29+ getName : function ( ) {
30+ return this . name ;
31+ }
32+ } ;
33+
34+ var getName = myObject . getName ;
35+ console . log ( getName ( ) ) ; // globalName
36+
37+ </ script >
38+
39+ < html >
40+ < body >
41+ < div id ="div1 "> 我是一个div</ div >
42+ </ body >
43+ < script >
44+
45+ window . id = 'window' ;
46+
47+ document . getElementById ( 'div1' ) . onclick = function ( ) {
48+ alert ( this . id ) ; // 输出:'div1'
49+ var callback = function ( ) {
50+ alert ( this . id ) ; // 输出:'window'
51+ }
52+ callback ( ) ;
53+ } ;
54+
55+
56+ document . getElementById ( 'div1' ) . onclick = function ( ) {
57+ var that = this ; // 保存div 的引用
58+ var callback = function ( ) {
59+ alert ( that . id ) ; // 输出:'div1'
60+ }
61+ callback ( ) ;
62+ } ;
63+
64+ </ script >
65+ </ html >
66+
67+
68+
69+ < script type ="text/javascript ">
70+
71+ function func ( ) {
72+ "use strict"
73+ alert ( this ) ; // 输出:undefined
74+ }
75+
76+ func ( ) ;
77+
78+ </ script >
79+
80+
81+ < script type ="text/javascript ">
82+ //构造器里的this 就指向返回的这个对象,见如下代码:
83+ var MyClass = function ( ) {
84+ this . name = 'sven' ;
85+ } ;
86+
87+ var obj = new MyClass ( ) ;
88+ alert ( obj . name ) ; // 输出:sven
89+
90+ var MyClass = function ( ) {
91+ this . name = 'sven' ;
92+ return { // 显式地返回一个对象
93+ name : 'anne'
94+ }
95+ } ;
96+
97+ var obj = new MyClass ( ) ;
98+ alert ( obj . name ) ; // 输出:anne
99+
100+ var MyClass = function ( ) {
101+ this . name = 'sven'
102+ return 'anne' ; // 返回string 类型
103+ } ;
104+
105+ var obj = new MyClass ( ) ;
106+ alert ( obj . name ) ; // 输出:sven
107+
108+ var obj1 = {
109+ name : 'sven' ,
110+ getName : function ( ) {
111+ return this . name ;
112+ }
113+ } ;
114+
115+ var obj2 = {
116+ name : 'anne'
117+ } ;
118+
119+ console . log ( obj1 . getName ( ) ) ; // 输出: sven
120+ console . log ( obj1 . getName . call ( obj2 ) ) ; // 输出:anne
121+
122+ </ script >
0 commit comments