2022-02-14

1.jQuery的extend扩展:

<script src="./jquery-1.12.4.js"></script>

    <script>

        /* extend()函数用于将一个或多个对象内容合并到目标对象 */

        /* $.extedn([deep],target,object1,object2) */

        /* deep,可选,是否深度合并对象 默认false*/

        /* target object类型,目标对象,其他对象成员属性附加到该对象上 */

        /* objct2 需要被合并的对象 */

        var object1 = {

            apple:0,

            banana:{weight:52,price:100},

            cherry:97

        };

        var object2 = {

            banana:{price:200},

            durian:100

        };

        /* 默认false,不深度合并对象,banana的值会被object2的值直接覆盖 */

        /* console.log( $.extend(object1,object2)); */

        /* 把deep改为true,表示深度合并对象 banana的对象的值相同的属性会被覆盖

           不相同的仍然保留 */

        console.log( $.extend(true,object1,object2))

    </script>

jQuery的extend扩展练习:

<script src="./jquery-1.12.4.js"></script>

    <script>

       /*  function fn1(obj,flag){

            var object2 = {

            banana:{price:200},

            durian:100

        };

        console.log($.extend(flag,obj,object2));

        }

        fn1(Object,false)

         */

        /* 1.把car1进行深度合并,把值打印到控制台上 */

        /* 2.把car1进行 不深度合并,把值打印到控制台上 */

        var car1 = {

            color:{name:'水晶白',price:'1000w'}

        }

        var car2 = {

            carname:'保时捷',

            color:{name:'帅库黑'}

        }

        console.log( $.extend(car1,car2))

        /* console.log( $.extend(true,car1,car2)) */

        function showCar(obj){

            var car1 = {

            color:{name:'水晶白',price:'1000w'}

        }

        $.extend(true,car1,obj)

        console.log(car1);

            document.write(`汽车的颜色:${car1.color.name}<br>`)

            document.write(`汽车的价格:${car1.color.price}`)

        }

        showCar()

    </script>

2.$.fn.extend()扩展一个或多个实例属性和方法:

<body>

    <button class="btn1">全选</button>

    <!-- <button class="btn2">取消全选</button> -->

    <h1>爱好</h1>

    睡觉:<input type="checkbox" >

    吃:<input type="checkbox">

    喝:<input type="checkbox">

    <!-- $.fn.extend()函数为jQuery扩展一个或多个实例属性和方法 -->

    <script src="./jquery-1.12.4.js"></script>

    <script>

        /* $.fn是jQuery的原型对象

           $.fn.extend()方法用于为jQuery的原型添加新的属性和方法

           这些方法可以再jQuery实例对象上调用 */

       /* $.fn.extend({

           consoleFn:function(){

               console.log('我自己给jq打印方法');

           }

       })

       $('body').consoleFn();

       $('body').css('background','pink') */

       $.fn.extend({

           checked1:function(){

               /* this 代表jq对象 input元素的集合 */

               console.log(this);

               this.each(function(i,e){

               console.log(i,e);

               e.checked = true

               })

           }

       })

       $.fn.extend({

           checked2:function(){

               //this 代表jq对象 input元素的集合

               console.log(this);

               this.each(function(i,e){

               console.log(i,e);

               e.checked = false

               })

           }

       })

       var flag = true

       $('.btn1').click(function(){

           if(flag){

            $(this).text('取消全选')

         $('input').checked1();

         flag = false

           }else{

            $(this).text('全选')

         $('input').checked2();

         flag = true

           }

       })

       /* $('.btn2').click(function(){

         $('input').checked2()

       }) */

    </script>

</body>

3.jQuery的框架分析:

<style>

        .div1 {

            background-color: red;

            width: 150px;

            height: 150px

        }

        .blue{

            background: blue;

        }

    </style>

</head>

<body>

    <div class="div1" ></div><button>点我</button>

    <!-- jQuery源码的第一行到最后一行是一个匿名函数 -->

    <script src="./3.框架分析.js"></script>

    <script>

        /* console.log($);

        $() */

        /* $('.div1', 'background', 'red')

        $('.div1', 'width', '200px')

        $('.div1', 'height', '200px') */

        /* $('.div1').css('background','red')

        $('.div1').hide()

        $('.div1').addClass('.div1') */

        /* $('.div1').addClass('blue') */

        $('button').click(function(){

            $('.div1').addClass('blue')

        })

    </script>

</body>

jQuery的js源码:

/* ()括起来的目的是 把()内部的代码解释成一个表达式 */

        //JQ框架源代码

        (function(){

            /* console.log('Hellow 你好'); */

            /* var a = '你好 同学'

            $ = function $ (){

                document.write(a)

            } */

            function $(element){

                let ele = document.querySelector(element)

                console.log(ele);

                ele.css = function(key,value){

                    ele.style[key] = value

                }

                /* 实现show和hide的方法 */

                ele.hide = function(){

                    this.style.display = 'none'

                }

                ele.show = function(){

                    this.style.display = 'block'

                }

                /* 实现jq的removeClass 和 addClass */

                ele.removeClass = function(className){

                    console.log(this.className);

                    /* let str = this.className.replace(className,'')

                    console.log(str); */

                    this.className = this.className.replace(className,'')

                }

                ele.addClass = function(className){

                    /* 原生的className会覆盖之前的类名 */

                    this.className = this.className + ' ' +className

                }

                ele.click = function(callback){

                    this.onclick = callback

                }

                console.log(ele);

                return ele

            }

            /* 思路:$('.div1')返回一个元素对象,元素对象里面有一个css方法 可以传参

           改变$('.div1')的样式 */

            /* 把局部的方法$ 挂载到window上变成全局的就可以使用了 */

            window.$ = $

        })()

4.jQuery转原生对象:

<body>

    <h1>你真棒</h1>

    <script src="./jquery-1.12.4.js"></script>

    <script>

       /* 原生转JQ对象 */

       let h1 = document.querySelector('h1')

       console.log($(h1).get[0]);

       /* jq对象转原生的方法 */

       /* 第一种$(h1)[0] */

       /* 使用$(h1).get(0)方法 可以把单个的jq元素转成原生dom对象 */

    </script>

</body>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容