返回顶部
首页 > 资讯 > 前端开发 > VUE >es6中的assign怎么用
  • 392
分享到

es6中的assign怎么用

2024-04-02 19:04:59 392人浏览 薄情痞子
摘要

本篇内容介绍了“es6中的assign怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

本篇内容介绍了“es6中的assign怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在es6中,assign用于对象的合并,可以将源对象的所有可枚举属性复制到目标对象;若目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性,语法为“Object.assign(...)”

教程操作环境:windows10系统、ECMAScript 6.0版、Dell G3电脑。

es6中assign的用法是什么

Object.assign方法用于对象的合并,将源对象(source)的所有的可枚举属性(key:value)复制到目标对象(target)

例如:

        const target = { a : 1 };
        const  source1 = { b: 2 };
        const  source2 = { c: 3 };
Object.assign(target,source1,source2)      // target { a:1, b:2, c:3 }

注意: 如果目标对象与源对象有同名属性,或者多个源对象有同名属性,则后面的属性会覆盖前面的属性。

例如:

    const target  = {a:1,b:1};
    const source1 = { b: 2,c:2};
    const source2 = {c:3};
 Object.assign(target,source1,source2); // target {a:1,b:2,c:3}

如果只有一个参数,Object.assign会直接返回改参数,如果参数不是对象则会先转出对象,然后在返回,由于null 与 undefined 无法转换为对象,所以如果他们作为参数就会报错。如果非对象参数出现在源对象的位置(意思是不是第一个参数),那么处理规则有所不同。首先,这些参数都会转成对象,如果出现null 或者undefined只要保证不再首个参数就不会报错。

例如:

   const obj = {a:1},
   Object.assign(obj)  === obj   // true   
   typeof  Object.assign(2)    // object
   Object.assign(undefined)  // 报错
   Object.assign(null)   // 报错
   Object.assign(obj,undefined)

其他类型的值(即数值、字符串和布尔值)不在首参数,也不会报错,但是字符串会以数组的形式,拷贝入目标对象,其他值都不会产生效果。

    const v1 = 'abc';
    const v2 = true;
    const v3 = 10;
    const objCurrent = Object.assign({},v1,v2,v3);  // {0:'a',1:'b',2:'c'}; 
    // 上面代码中,v1,v2,v3分别是字符串、布尔值、数值,结果只有字符串符合目标对象(以字符串数组的形式),数值与布尔值都会被忽略。这是因为只有字符串的包装对象,会产生枚举属性。
Object.assign()的深浅拷贝问题
    const obj1 = {a: 1};
    const obj2 = {b: 2};
    const obj3 = {c: 3};
    const obj = Object.assign(obj1,obj2,obj3);
    console.log(obj);   //  {a:1,b:2,c:3}
    console.log(obj1);   //   {a:1,b:2,c:3}  原始对象也被改变啦
    const v1 ={a:1},
    const currentObj = Object.assign(JSON.parse(jsON.stringify(v1)),{e:2})
    console.log(currentObj)  // {a:1,e:2}
    console.log(v1) // {a:1} 并没有发生变化

当对象中只有一级属性,没有二级属性的时候,此方法为深拷贝,但是对象中有对象的时候,此方法在二级属性以后就是浅拷贝。

使用递归的方式实现深拷贝

    // _deep 深度拷贝的方法
    function  _deep(source){
        let  target;
        if (typeof source === 'object'){
            // 判断目标值是数组还是对象
            target = Array.isArray(source) ? []: {}
            for (let key in source) {
                // 指示对象自身属性中是否含有指定的属性
                if(source.hasOwnProperty[key]){
                      // 如果属性不是对象则赋值,负责递归
                      if(typeof source[key] !== 'object'){
                            target[key] = source[key]
                      }else {
                            target[key] = _deep(source[key])
                      }
                }
            }
        } else {
           target = source
        }
        // 返回目标值
        return  target 
    }

使用js实现深拷贝

    function _deepJs(_data){
        return JSON.parse(JSON.stringify(_data));
    }

“es6中的assign怎么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: es6中的assign怎么用

本文链接: https://lsjlt.com/news/97659.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • es6中的assign怎么用
    本篇内容介绍了“es6中的assign怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • php中assign()怎么使用
    在PHP中,assign()函数用于将一个值分配给一个变量。它的基本语法如下:```phpassign($variable, $va...
    99+
    2023-08-19
    php
  • Python中assign函数怎么使用
    在Python中,`assign`函数不是Python内置函数,而是pandas库中的一个方法。`assign`方法用于在DataF...
    99+
    2023-10-10
    Python
  • R语言中assign函数怎么使用
    在R语言中,`assign`函数用于将一个值指派给一个变量名。其使用格式如下:```Rassign(x, value, envir ...
    99+
    2023-10-09
    R语言
  • php中$this->assign()的用法
    在PHP中,$this->assign()是Smarty模板引擎中的一个方法,用于向模板文件中分配变量值。使用这个方法可以将一个或多...
    99+
    2023-08-18
    PHP
  • vue中怎么使用assign重置data数据
    这篇文章主要介绍“vue中怎么使用assign重置data数据”,在日常操作中,相信很多人在vue中怎么使用assign重置data数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue中怎么使用assig...
    99+
    2023-06-29
  • es6中的yield怎么用
    这篇文章主要介绍“es6中的yield怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“es6中的yield怎么用”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • es6中的import怎么用
    这篇文章主要讲解了“es6中的import怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“es6中的import怎么用”吧! ...
    99+
    2024-04-02
  • es6中的generator怎么用
    本篇内容介绍了“es6中的generator怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • es6中的super怎么用
    这篇“es6中的super怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“es6中的s...
    99+
    2024-04-02
  • es6中的const怎么用
    这篇文章主要介绍了es6中的const怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇es6中的const怎么用文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • es6中的fetch怎么用
    本篇内容主要讲解“es6中的fetch怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“es6中的fetch怎么用”吧! es6中...
    99+
    2024-04-02
  • es6中的set怎么使用
    这篇文章主要讲解了“es6中的set怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“es6中的set怎么使用”吧!本文操作环境:windows7系统、...
    99+
    2024-04-02
  • es6中的symbol怎么使用
    这篇“es6中的symbol怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“es6中...
    99+
    2024-04-02
  • ES6中Promise怎么用
    这篇文章主要为大家展示了“ES6中Promise怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ES6中Promise怎么用”这篇文章吧。Promise 基...
    99+
    2024-04-02
  • ES6中fill()怎么用
    这篇文章将为大家详细讲解有关ES6中fill()怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。fill()fill()方法使用给定值,填充一个数组。['a&...
    99+
    2024-04-02
  • es6中await怎么用
    这篇文章给大家分享的是有关es6中await怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 es6中,await用于等待一个promise的异步...
    99+
    2024-04-02
  • ES6中const怎么用
    这篇文章给大家分享的是有关ES6中const怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。关键字const 的作用const是constant(常量)的缩写,const和 ...
    99+
    2024-04-02
  • ES6中let怎么用
    这篇文章给大家分享的是有关ES6中let怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ECMAScript是什么?很多人都很困惑,哪怕是工作3至5年前端工程师也困惑,ECM...
    99+
    2024-04-02
  • es6中find()怎么用
    本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。es6 find()的介绍find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。find() 方法为数组中的每个元素都调用一次函数执行:当数...
    99+
    2022-11-22
    ES6 javascript
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作