javascript对象的属性,方法,prototype作用范围分析

读了篇博客感觉很有用"javascript对象的属性,方法,prototype作用范围分析"就自己写了一遍.以后自己可以用的到.

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
 5     <title>javascript对象的属性,方法,prototype作用范围分析</title>
 6 </head>
 7 <body>
 8     
 9 </body>
10 </html>
11 <script type="text/javascript">
12     function Obj(arg){
13 
14         /*第1种:对象声明后,不管对象本身还是原型继承对象后的子类都没有办法直接访问*/
15         var a = arg;                     //对象的私有变量         对象和原型都不能访问
16         var fn=function(){};             //对象的私有函数         对象和原型都不能访问
17  
18         /*第2种*/
19         this.b=arg;                      //原型的公有变量         原型能访问对象自己不能访问(这种其实很容易理解出错的,对象本身竟然不能调用但原型却可以.)一直以为这种是对象自己也是可以调用的属性.
20         this.fn1=function(){};           //原型的公有函数         原型能调用对象自己不能访问
21     }
22         /*第3种对象本身扩展后方法和属性,继承对象后的原型访问不到.*/
23          Obj.c=1;                                //对象的公有变量          对象能访问原型不能
24          Obj.fn2=function(){};                   //对象的共有函数          对象能访问原型不能
25 
26         /*第4种*/
27          Obj.prototype.d=11;                     //原型的属性              对象本身访问不到
28          Obj.prototype.fn3=function(){};         //原型的方法              对象本身访问不到
29 
30          /*第2种和第4种放在一起就是原型继承对象后的子类可以访问到,但是原对象本身访问不到*/
31 
32     console.log("Obj.a = "+Obj.a);                                   //Obj.a = undefined
33     console.log("Obj.fn = "+Obj.fn);                                 //Obj.fn = undefined
34      
35     console.log("Obj.b = "+ Obj.b);                                  //Obj.b = undefined
36     console.log("Obj.fn1 = "+ Obj.fn1);                              //Obj.fn1 = undefined
37 
38     console.log("Obj.c = "+ Obj.c);                                  //Obj.c = 1
39     console.log("Obj.fn2 = "+Obj.fn2);                               //Obj.fn2 = function (){}
40 
41     console.log("Obj.d = "+ Obj.d);                                  //Obj.d = undefined
42     console.log("Obj.fn3 = "+Obj.fn3);                               //Obj.fn3 = undefined
43     console.log("--------------------------------------");
44 
45     var A = new Obj(22);
46     console.log("A.a = "+A.a);                             //A.a = undefined
47     console.log("A.fn = " +A.fn);                          //A.fn = undefined
48 
49     console.log("A.b = "+ A.b);                            //A.b = 22
50     console.log("A.fn1 = "+A.fn1);                         //A.fn1 = function (){}
51 
52     console.log("A.c = "+A.c);                             //A.c = undefined
53     console.log("A.fn2 = "+A.fn2);                         //A.fn2 = undefined
54 
55     console.log("A.d = "+A.d);                             //A.d = 11
56     console.log("A.fn3 = "+A.fn3);                         //A.fn3 = function (){}
57 
58     /*第1,3,4种方法很好理解.第2种方法对象本身不能直接访问闭包内的变量能够理解.但是使用关键字this后继承对象的原型就可以调用这些属性和方法值得深入研究.关键字this的特性.*/
59 </script>

你可能感兴趣的:(javascript对象的属性,方法,prototype作用范围分析)