• JavaScript中使用比较多的两种创建对象的方式


    1、使用组合模式创建对象

    原型模式创建对象适合封装方法,构造方法模式创建对象适合封装属性

    组合方法缺点:将构造方法和原型分开写


    <script type="text/javascript">
         //在构造方法内部封装属性
         function Person(name, age) {
             this.name = name;
             this.age = age;
        }
         //在原型对象内封装方法
         Person.prototype.eat = function (food) {
             alert(this.name + "Eat" + food);
        }
         Person.prototype.play = function (playName) {
             alert(this.name + "Play" + playName);
        }
         
         var p1 = new Person("Jack", 20);
         var p2 = new Person("Mark", 30);
         p1.eat("apple");
         p2.eat("orange");
         p1.play("football");
         p2.play("games");
     </script>

    2、动态原型模式创建对象

    动态原型模式把所有的属性和方法都封装在构造方法中,仅仅在需要的时候才去在构造方法中初始化原型,又保持了同时使用构造函数和原型的有点。


    <script type="text/javascript">
         //构造方法内部封装属性
         function Person(name, age) {
             //每个对象都添加自己的属性
             this.name = name;
             this.age = age;
             /*
                判断this.eat这个属性是不是function,如果不是function则证明是第一次创建对象,
                则把这个funcion添加到原型中。
                如果是function,则代表原型中已经有了这个方法,则不需要再添加。
                perfect!完美解决了性能和代码的封装问题。
            */
             if(typeof this.eat !== "function"){
                 Person.prototype.eat = function () {
                     alert(this.name + " Eat good");
                }
            }
        }
         var p1 = new Person("Jack", 40);
         p1.eat();  
     </script>

  • 相关阅读:
    Hbase性能调优(一)
    文章标题
    JDBC的PreparedStatement启动事务使用批处理executeBatch()
    java.lang.OutOfMemoryError: PermGen space及其解决方法
    linux 关机命令总结
    oracle 启动关闭以及监听启动关闭命令
    bash: sqlplus: command not found 解决方法
    VMware 虚拟机 linux执行 ifconfig 命令 eth0没有IP地址(intet addr、Bcast、Mask) UP BROADCAST MULTICAST 问题
    Linux的文本编辑和文本内容查看命令
    RHEL6服务器网络配置 修改linux RHEL6系统下的ip方法
  • 原文地址:https://www.cnblogs.com/wuweb/p/9376073.html
Copyright © 2020-2023  润新知