zoukankan      html  css  js  c++  java
  • 关于JS的assign() 方法

    先看这样一个示例:

     
    JS示例

    输出的结果是这样的:

     
    输出

    结果是我的obj的name对象被覆盖。


    如何解决呢?

    这里查到了一个assign()的方法。
    关于assign()方法,MDN上是这样解释的:Object.assign() 方法用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
    于是我们用assign()方法改写一下代码:

     
    改写代码

    执行结果是这样的:

     
    改写完的输出

    这样我们的obj对象的属性就不会被覆盖啦~~


    注意事项:

    在属性拷贝过程中可能会产生异常,比如目标对象的某个只读属性和源对象的某个属性同名,这时该方法会抛出一个 TypeError 异常,拷贝过程中断,已经拷贝成功的属性不会受到影响,还未拷贝的属性将不会再被拷贝。
    注意, Object.assign 会跳过那些值为 null 或 undefined 的源对象。
    Object.assign() 拷贝的是属性值。假如源对象的属性值是一个指向对象的引用,它也只拷贝那个引用值。

    它无法实现深层复制

    比如:

     
    深层复制

    输出结果:

     
    结果

    虽然进行了复制,但是它只能实现浅层复制,e的指向和f的指向没有发生改变。



    作者:7天苹果
    链接:https://www.jianshu.com/p/fd3f8a45d5fd
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    js:语言精髓笔记1--标识符与基本类型
    ember.js:使用笔记4 数组数据的分组显示
    ember.js:使用笔记3 活用{{bind-attr}}
    ember.js:使用笔记2-数据删除与存储
    ember.js:使用笔记1-数组数据统一显示
    工具:使用jekyll生成静态网站
    css:删除:×的效果
    js写随机一个颜色
    回调函数的使用
    jquery获取select标签的选中元素
  • 原文地址:https://www.cnblogs.com/upupRabbit/p/10149628.html
Copyright © 2011-2022 走看看