• 面向对象&单例模式&工厂模式


    JS是面向对象开发的
    面向对象思想:
    在JS中所有的东西都是对象
    类:比如说自然界有人类,动物类,植物类,植物类..
    在JS是我们大体分为两种是[内置类],[自定义类]

    内置类

    每一种数据类型都已自己对应的类,Number,String,Boolean,Null,Array,Object,Date,(注意!Math不是一个类,就是一个对象)
    元素都有自己的内置类
    比如:

    console.dir(oDiv)会出现当前元素的所属类--proto-- 不断地往上点击查看可以看到最终都是属于Object类的,所有的类都是函数,在JS中Object是所有类的一个"基类","所以万物皆对象" 
    

    ====================================================

    单例模式

    var obj1={
    name:"王东",
    age:18,
    say:functiion(){
    console.log("JS")
    }
    };
    
    var obj2={
    name:"刘亚丽",
    age:21,
    say:functiion(){
    console.log("S")
    }
    };
    

    在之前obj1 obj2就是一个简单的对象名,在这里我们加一个高大上的名字,叫做命名空间.

    function fn(){
    console.log("fn")
    };
    function fn(){
    console.log("fffff")
    }
    如果两个人写的都模块名字一样的话 合在一起时就会冲突
    
    换句话来说单例模式就是一个对象,保障变量名不冲突,调用自己的方法直接使用的方法```
    
            ------------------练习-----------------
            <ul id="OUl1">
            <li>2</li>
            <li>5</li>
            <li>1</li>
            <li>6</li>
            </ul>
            <button id="btn"></button>
            <ul id="OUl2">
            </ul>
            ---------------------------------------------
            需求1:点击每一个li让里面的数字+1
            ---------------------------------------------
            <script>
            var oUl=document.getElementById("oUl1");
            var oUl2=document.getElementById("oUl2");
            var oLis=oUl.getElementsByTagName("li");
            for (var i=0;i<oLis.length;i++){
            oLis[i].onclick=function(){
            this.innerHTML++;}
            }
            </script>
            ----------------------------------------------
            需求2:点击按钮"btn"让oul1列表中的li复制到oul2列表中
            ----------------------------------------------
            <script>
            var btn=document.getElementById("btn");
            btn.onclick=function(){
            
            }
            </script>
    

    ===================================================================

    工厂模式

    我们把实现相同功能的方法封装成一个函数,以后在想实现这个功能,就不用在写一遍代码了,直接执行函数,通过参数来得到具体的实例.
    批量生产:低耦合高内聚,减少代码冗余,提高代码利用率.

    var girlFriend0={name:"刘嘉玲",age:46};
        var girlFriend1={name:"刘一飞",age:46};
        var girlFriend2={name:"刘试试",age:46};
        function getObj(name,age){
            var obj={};
            obj.name=name;
            obj.age=age;
            return obj
        }
        getObj("秀秀",20)
    

    如果想实现重载的原理就不要写形参,用arguments处理

    function ss(a,b){
    return a+b
    }
    function sss(a,b,c){
    retrun a*b*c
    }
    function ss(){
    if(arguments.length===2){
    return arguments[0]+arguments[1]
    }else if(arguments.length===3){
    return arguments[0]*arguments[1]*arguments[2]
    }else {alert("参数不合法")"}
    }
    
    ss()
    function fnn(){
    return eval(public.toArray(arguments).join("+"))
    }
    
  • 相关阅读:
    Cobalt Strike系列教程第二章:Beacon详解
    Cobalt Strike系列教程第一章:简介与安装
    安全意识第九期丨软件暗藏陷阱 下载要三思
    安全意识第八期丨OMG!发个帖子竟然摊上大事了
    新手教程丨利用Python制作一款截图识别软件!
    2019互联网安全城市巡回赛·北京站——巅峰对决,邀你来战!
    安全意识第七期丨双11优惠券“1元抵1000”,速来领!
    《0day安全软件漏洞分析技术》学习笔记
    安全意识第六期丨谁来帮帮我,改签机票为什么被扣2万元?
    C#常用功能函数小结(.NET 4.5)
  • 原文地址:https://www.cnblogs.com/Jiazexin/p/7080354.html
Copyright © 2020-2023  润新知