zoukankan      html  css  js  c++  java
  • jQuery

    一、jQuery中的extend()

    通常我们使用jQuery的extend时,大都是为了实现默认字段的覆盖,即若传入某个字段的值,则使用传入值,否则使用默认值。

    function getOpt(option){
        var _default = {
            name : 'wenzi',
            age : '25',
            sex : 'male'
        }
        $.extend(_default, option);
        return _default;
    }
    getOpt();  // {name: "wenzi", age: "25", sex: "male"}
    getOpt({name:'bing'}); // {name: "bing", age: "25", sex: "male"}
    getOpt({name:'bing', age:36, sex:'female'});  // {name: "bing", age: 36, sex: "female"}

    extend是将两个或者更多对象的内容合并到第一个对象上,此时第一个对象的原内容发生改变。

    对于$.extend(_default,option)来说,_dafault的结构已经发生了改变,并且相同属性的值会被option给替换掉。所以如果不想第一个参数_default的结构发生改变的话,可以这样做:

    var res={};
    $.extend(res,_default, option);//将_default和option对象上的内容合并到res上,并且_default和option的内容不会发生改变

    jQuery的extend可以进行深浅拷贝吗 ?

    使用extend()默认是浅拷贝

    var obj={
        name:'xi',
        score:80
    }
    var obj1={
        name:'xi',
        score:{
            english:90,
            math1:100
        }
    }
    $.extend(obj,obj1);
    obj.score.english=60;
    console.log(obj.score.english);//60
    console.log(obj1.score.english);//60

    当然$.extend()也提供了深拷贝的方法:$.extend([deep],obj1,obj2),若第一个参数是布尔值,并且值为True,那么就会把第二个参数作为目标参数进行合并。

    $.extend(true,obj,obj1);
    obj.score.english=60;
    console.log(obj.score.english);//60
    console.log(obj1.score.english);//90

    栗子:

    var obj={
        name:['a','b']
    }
    var obj1=$.extend({},obj);//浅拷贝
    var obj2=$.extend(true,{},obj);//深拷贝
                    
    obj.name[0]='aaaa';
    console.log(obj1);//{name:['aaa','b']}
    console.log(obj2);//{name:['a','b']}

    二、jQuery框架与Vue框架的区别

    (1)数据和视图的分离(解耦)

      jQuery的数据和视图混在一起,没有视图和数据分离。不利于复用。

      vue中找数据和dom是非常方便的,数据和视图是分离的,数据就是data。

    (2)以数据驱动视图

      jQuery需要直接操作dom修改,而vue是以数据驱动视图,只关心数据的变化,dom操作被封装。

    动态给ul添加li标签

    jQuery:
    var ul=document.getElementById('ul');
    var str='';
    for(var i=0;i<arr.length;i++){
        str+='<li>'+arr[i]+'</li>';
    }
    ul.appendChild(str);
    
    vue:
    <ul v-for='item in arrList'>
        <li>{{item}}</li>
    </ul>
    
    data:{
        arrList:[];
    }
  • 相关阅读:
    U1
    std::vector的内存释放
    (转)浅谈PostgreSQL的索引
    PostgreSQL的generate_series函数应用
    linux 里的`反引号
    wireshark抓取本地回环数据包
    linux shell中 if else以及大于、小于、等于逻辑表达式介绍
    c++利用互斥锁实现读写锁
    c++互斥锁的实现
    大小端,"字节序"
  • 原文地址:https://www.cnblogs.com/xiaoan0705/p/8596159.html
Copyright © 2011-2022 走看看