• 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>
  • 相关阅读:
    Bellman算法
    Codeforces Round #378 (Div. 2) D
    运算符优先级
    Kruskal算法
    Java 大数运算
    无根树转有根树
    欧拉函数模板
    HDU 4135 Co-prime(容斥原理)
    快速求n的质因子(数论)
    Markdown中插入数学公式
  • 原文地址:https://www.cnblogs.com/liubeimeng/p/4895568.html
Copyright © 2020-2023  润新知