Day35 JQuery的跨域+深浅拷贝

一、jQuery的跨域

1.js的跨域方法

1.cors 后端技术 和前端无关

2. 服务器代理proxy

配置服务器配置文件 设定 代理的跨域地址 使用服务器代理名称 完成跨域

3.jsonp 定义一个函数

设定一个script标签 script 标签src属性 是跨域的url地址

2、jQuery的跨域方法

proxy 服务器代理 只要你配置好 服务器代理

jQuery 直接使用代理名称 就可以完成跨域请求

也就是 只要配置好服务器代理

jQuery的proxy 和原生的js的proxy是一样的程序过程

jsonp 原生js的jsonp

1.定义一个 函数设定的函数名称

这个函数是传参后端程序 后端调用的函数

2.设定一个 script 标签以及src属性

src属性 是跨域请求的url地址

       携带 参数数据  其中 cb=函数名称  是携带传参  调用函数的函数名称

3.jQuery的jsonp

     1.不用专门的定义一个函数

     jQuery使用success定义的函数      作为后端 程序调用的函数

     2.  不用定义 script标签

     设定好相关参数  jQUery来执行  定义script标签

      dateType :'jsonp'

      jQuery 知道你要使用jsonp完成跨域

      jQuery 会执行相关的jsonp请求需要执行的设定

      定义script标签

      定义script标签 src属性

      写入script标签前

      删除script标签

     

     3.data设定 携带参数

     data中设定携带的参数   必须要删除cb=函数名称

      不是在data中定义  传参函数名称 键值对

      通过专门的属性来设定  春蚕函数名称  键值对

      4.  通过dataType 和jsonp两个属性来设定    传参函数名称  键值对

      dataType:‘jsonp’,

      告诉  jQuery程序   我们要使用Jsonp方式完成跨域

      jQuery 会执行相关的jsonp请求需要执行的设定

      定义script 标签

      定义script标签src属性

      写入script标签

      删除script标签  

      还会给sccess定义的匿名函数 定义一个函数名称,也就是 传参函数名称键值对的键值

      jsonp:‘告诉jQuery程序  后端程序 定义的 传参函数名称键值对的 键名’

      也就是  告诉jQuery程序  使用cb键名传参 jQUery定义的函数名称

二、深浅拷贝

1.含义:在引用数据类型(数组  对象)复制过程中 产生的问题

2.区别:

浅拷贝

                直接复制拷贝的是 数组/对象 的内存地址

                本质上是有一个引用数据类型

                所有的变量存储的是相同的内存地址  操作的是同一个存储空间

                任意一个变量的操作   其他变量都会受影响

               

               深拷贝

               复制拷贝的是 数组/对象 存储的数值数据

               本质上  执行几次深拷贝  就有几个独立的引用数据类型

               存储的是不同的内存地址  操作的是不同的存储空间

               一个变量 操作引用数据类型 对其他变量没有影响

               原生js  应该使用递归函数  完成  数组/对象 的深拷贝

// 变量arr1中  存储的是数组的内存地址
          const arr1 = ['北京', '天津', '上海', '武汉'];

          // 浅拷贝
          // 将变量arr1中存储的数组的内存地址 赋值给变量arr2 存储
          // 也就是 变量2 中存储的是和变量1 中存储的相同的内存地址
          // 通过其中一个变量操作数组  另一个变量也受影响
          const arr2 = arr1;

          // 深拷贝
          // 创建一个新的引用数据类型
          const arr3 = [];
          // 循环遍历arr1 将arr1中的存储获取之后  存储到arr3中
          arr1.forEach(item => {
               arr3.push(item);
          })


          // 通过arr1操作数组
          arr1[2] = '内蒙';
          // arr1 和arr2指向的是相同的存储空间
          // arr1操作之后arr1和 arr2都受影响
          console.log(arr1);
          console.log(arr2);
          // arr3是新的内存地址  知识存储的数据数值和arr1相同
          // arr1的操作是arr1 内存地址对应的存储空间
          // 和arr3的存储空间 没有关系  没有影响
          console.log(arr3);

3.jQuery的深浅拷贝比较特殊

    1,jquery中没有封装传统意义上的浅拷贝的函数

    2jQuery中封装的$.extend()默认执行的就是 传统意义上的深拷贝

    3.jQuery中的所谓的浅拷贝

    指得是  一维数据 深拷贝   二维数据浅拷贝

    4,jQUery中 深浅拷贝的语法形式

    const变量=数组/对象;

    $.extend(变量,原始数组/对象);

    浅拷贝   一维数据深拷贝   二维数据浅拷贝

    $.extend(true,变量, 原始数组/对象);

    深拷贝   一维数据    多唯数据都是深拷贝

    // 原始数组
          const arr1 = ['北京' , '上海' , '广州' , '重庆' , '天津' , [100,200,300,400] , {name:'张三' , age:18 , sex:'男'} ];
          //  jQuery的浅拷贝
          // 创建一个数组2
          const arr2=[];
          // 将arr中的数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值