zoukankan      html  css  js  c++  java
  • JS基础_构造函数修改

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6         <script type="text/javascript">
     7             
     8             /*
     9              * 
    10              * 创建一个Person构造函数
    11              *     - 在Person构造函数中,为每一个对象都添加了一个sayName方法,目前我们的方法是在构造函数内部创建的,
    12              *         也就是构造函数每执行一次就会创建一个新的sayName方法,也就是所有实例的sayName都是唯一的。
    13              *         这样就导致了构造函数执行一次就会创建一个新的方法,
    14              *             执行10000次就会创建10000个新的方法,而10000个方法都是一摸一样的
    15              *             这是没有必要的,完全可以使所有的对象共享同一个方法
    16              * 
    17              */
    18             
    19             function PersonOne(name , age , gender){
    20                 this.name = name;
    21                 this.age = age;
    22                 this.gender = gender;
    23                 //向对象中添加一个方法
    24                 this.sayName = function(){
    25                     alert("Hello大家好,我是:"+this.name);
    26                 }
    27             }
    28             
    29             //创建一个Person的实例
    30             var per = new PersonOne("孙悟空",18,"");
    31             var per2 = new PersonOne("猪八戒",28,"");
    32             per.sayName();
    33             per2.sayName();
    34             
    35             //------------------------------------------------------------------------------------
    36             
    37             //那怎么办呢?试着将sayName方法在全局作用域中定义
    38             
    39             function PersonTwo(name , age , gender){
    40                 this.name = name;
    41                 this.age = age;
    42                 this.gender = gender;
    43                 //向对象中添加一个方法
    44                 this.sayName = fun;
    45             }
    46             
    47             function fun(){
    48                 alert("Hello大家好,我是:"+this.name);
    49             };
    50             
    51             //创建一个Person的实例
    52             var per = new PersonTwo("孙悟空",18,"");
    53             var per2 = new PersonTwo("猪八戒",28,"");
    54             per.sayName();
    55             per2.sayName();
    56             
    57             /*
    58              * 可是将函数定义在全局作用域,污染了全局作用域的命名空间
    59              *     而且定义在全局作用域中也很不安全
    60              */
    61             
    62             //------------------------------------------------------------------------------------
    63             
    64             //那么可以怎么改呢?向原型中添加sayName方法
    65             
    66             /**
    67              * 以后我们创建构造函数时,可以将这些对象共有的属性和方法,统一添加到构造函数的原型对象中,
    68              *     这样不用分别为每一个对象添加,也不会影响到全局作用域,就可以使每个对象都具有这些属性和方法了
    69              */
    70             
    71             function PersonThree(name , age , gender){
    72                 this.name = name;
    73                 this.age = age;
    74                 this.gender = gender;
    75             }
    76             //向原型中添加sayName方法
    77             PersonThree.prototype.sayName = function(){
    78                 alert("Hello大家好,我是:"+this.name);
    79             };
    80             
    81             //创建一个Person的实例
    82             var per = new PersonThree("孙悟空",18,"");
    83             var per2 = new PersonThree("猪八戒",28,"");
    84             per.sayName();
    85             per2.sayName();
    86             
    87             
    88             
    89         </script>
    90     </head>
    91     <body>
    92     </body>
    93 </html>
  • 相关阅读:
    设计模式
    IPC- Posix与system v
    squashfs文件系统
    各种根文件系统
    SPI通讯协议
    tty各种设备的情况
    Linux系统调用过程
    uImage和zImage的区别
    jquery可见性选择器(匹配匹配所有显示的元素)
    jquery可见性选择器(匹配所有隐藏的元素)
  • 原文地址:https://www.cnblogs.com/ZHOUVIP/p/7923316.html
Copyright © 2011-2022 走看看