zoukankan      html  css  js  c++  java
  • 【Javescript】封装

    • 生成实例对象的原始模式
        <script type="text/javascript">
             var Cat={
                 name:'波斯猫',
                 color:'White'
             }
             alert(cat.name);
         </script>

    这是简单的封装,单若需要生成多个示例,则需要多生成多个示例,较为麻烦,如下:

    <script type="text/javascript">
            var cat={
                name:'波斯猫',
                color:'White'
            }
            var cat1={
                name:'折耳猫',
                color:'orange'
            }
            var cat2={
                name:'美国卷毛猫',
                color:'White'
            }
        </script>
    •  原始模式的改进

         将生成实例的过程封装成一个方法,生成实例对象是,再调用方法,代码如下:

    <script type="text/javascript">
            var cat3=NEWCat("折耳猫","orange");
            var cat4=NEWCat("波斯猫","White");
            function NEWCat(name,color)
            {
                var cat={
                    name:name,
                    color:color
                }
                return cat
            }
        </script>

        这种方法存在的问题是两个实例之间没有存在内部联系,不能反应出它们是同一原型对象的实例

    • 构造函数模式

        为了解决从原型对象生成实例的问题,Javascript提供了一个构造函数(Constructor)模式。

        所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。

        this指的是调用函数的那个对象(后续学习总结this变量)

       <script type="text/javascript">
            var cat3= new Cat("折耳猫","orange");
            var cat4= new Cat("波斯猫","White");
            alert(cat3.name);
            alert(cat4.name);
            function  Cat(name,color)
            {
              this.name=name;
              this.color=color;
            }
        </script>

        cat3和cat4会含有一个constructor属性,指向它们的构造函数:

          alert(cat3.constructor == Cat); //true

    alert(cat4.constructor == Cat); //true 

       Javascript还提供了一个instanceof运算符,验证原型对象与实例对象之间的关系:

          alert(cat3 instanceof Cat); //true

    alert(cat4 instanceof Cat); //true 

    但是,构造函数方法存在浪费内存的问题。

    例如,若Cat对象内含有不变的属性type(种类),再添加一个方法eat(吃),

  • 相关阅读:
    javascript 原型世界浅析
    zookeeper
    Message Queue
    js给对象onclick事件赋值
    什么是堡垒机
    什么是数据库实例
    动态规划解决矩阵路径问题
    0-1背包问题
    回溯算法
    Python列表的复制
  • 原文地址:https://www.cnblogs.com/alwaysblog/p/6347341.html
Copyright © 2011-2022 走看看