zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    msfvenom常用脚本生成
    CC攻击防护方法
    上传漏洞分类
    cmd下载文件(利用powershell)
    发送HTTP请求的新姿势
    (转载).NET Core 深度克隆对象,引用类型的平行世界
    使用VMware安装centos7并配置网络
    (转载)这才是真正的远程开发——VS Code Remote 环境搭建
    (转载)基于Vue,ElementUI开发的一款表单设计器
    (转载)VMWare VMNet 8 的配置使用
  • 原文地址:https://www.cnblogs.com/wuweb/p/9376073.html
Copyright © 2011-2022 走看看