javascript学习笔记(2)————this

 1 //简单的学习JavaScript中this关键词
 2 //this在于我简单的理解就是谁调用了当前方法(函数),this就指向谁
 3 
 4 var a = 20;
 5 function fn1(){
 6     this.a = 10;
 7 }
 8 
 9 fn1();                 //其实这里隐含了window对象 window.fn1() === fn1()
10 alert(this.a);         //10;
11 alert(window.a);    //10;
12 
13 alert(fn1.a);        //undefined 
14                     //这里出现undefined,是因为fn1函数并没有自己调用a.
15 var fn1 = new fn1();
16 alert(fn1.a);         //10; 使用new关键字 js内部大概经历: 1)建立一个空对象 2)this关键字指向空对象 3)空对象赋值给fn1
17                     //所以出现this就指向fn1的情况
18 
19 //初学的时候很容易犯这样的错误
20 
21 var oBox = document.getElementById('bob');
22 oBox.onclick = function(){
23     this.style.backgroundColor = 'red'; //这里this指向oBox
24     function abc(){
25         this.style.display = 'block';    //这里this暂时不清楚指向谁,因为还没有被调用
26     }
27     abc();//刚开始的很容易犯迷糊,以为这里oBox的模型是块模型
28           //其实这里发生的window.style.display = 'block';
29           //因为其实window调用的。其实有个很简单的方式,因为 abc()前面就没有oBox.而是隐藏的window
30 }
31 
32 
33 //下面在对象下的调用
34 var color = 'black';
35 
36 var obj = {
37     color :'blue'38     saycolor : sayColor
39 }
40 
41 var obj2 = {
42     color :'red',
43     saycolor : sayColor
44 }
45 
46 function sayColor(){
47     console.log(this.color);
48 }
49 
50 sayColor(); //'black';
51 obj.saycolor();//'blue';
52 obj2.saycolor();//'red'

 

你可能感兴趣的:(javascript学习笔记(2)————this)