博客
关于我
Object.assign用法
阅读量:800 次
发布时间:2023-02-17

本文共 1667 字,大约阅读时间需要 5 分钟。

Object.assign()方法:对象合并与赋值详解

什么是Object.assign()?

作为ECMAScript标准的一部分,Object.assign() 是一个强大的工具,用于将可枚举属性从一个或多个源对象复制到目标对象。它返回目标对象,允许我们轻松实现对象属性的合并和赋值。

Object.assign()的使用方法

Object.assign() 的调用方式如下:

Object.assign(target, ...sources)
  • target:目标对象,属性会被源对象的属性覆盖。
  • sources:多个源对象,属性会被逐一合并到目标对象中。
  • 返回值:目标对象,即被修改的对象。

Object.assign()的示例

示例1:合并不同对象

var target = {name: 'guxin', age: 25};var source = {state: 'single'};var result = Object.assign(target, source);console.log(target, target === result); // {name: 'guxin', age: 25, state: 'single'}, true

示例2:使用空对象作为目标

var result = Object.assign({}, target, source);

示例3:处理重名属性

var target = {name: 'guxin', age: 18};var source = {state: 'single', age: 22};var result = Object.assign(target, source);console.log(target); // {name: 'guxin', age: 22}

示例4:多个源对象

var target = {name: 'guxin', age: 18};var source1 = {state: 'single', age: 22};var source2 = {mood: 'happy', age: 25};var result = Object.assign(target, source1, source2);console.log(target); // {name: 'guxin', age: 25, state: 'single', mood: 'happy'}

注意事项

  • 可枚举属性:Object.assign() 只会复制源对象的可枚举属性,不能拷贝继承属性或不可枚举属性。
  • 深拷贝需求:如果源对象的属性是对象引用,需要自行实现深拷贝。
  • 目标对象改变:使用Object.assign() 会修改目标对象的属性,需谨慎使用。
  • 异常处理:一旦检测到错误,后续拷贝任务会停止。
  • Object.assign()与$.extend()的区别

    通过示例对比:

    var target = {name: 'guxin', age: 18};var source1 = {state: 'single', age: 22};var source2 = {mood: 'happy', age: 25};var resultAssign = Object.assign(target, source1, source2);console.log(resultAssign); // {name: 'guxin', age: 25, state: 'single', mood: 'happy'}var resultExtend = $.extend(target, source1, source2);console.log(resultExtend); // {name: 'guxin', age: 25, state: 'single', mood: 'happy'}

    两者功能相似,但在实现上有细微差异,主要体现在异常处理和性能上。

    转载地址:http://tynfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现local weighted learning局部加权学习算法(附完整源码)
    查看>>
    Objective-C实现logistic regression逻辑回归算法(附完整源码)
    查看>>
    Objective-C实现logistic sigmoid函数(附完整源码)
    查看>>
    Objective-C实现longest Common Substring最长公共子串算法(附完整源码)
    查看>>
    Objective-C实现longest increasing subsequence最长递增子序列算法(附完整源码)
    查看>>
    Objective-C实现longestCommonSubsequence最长公共子序列算法(附完整源码)
    查看>>
    Objective-C实现LongestIncreasingSubsequence最长递增子序列算法(附完整源码)
    查看>>
    Objective-C实现lorenz transformation 洛伦兹变换算法(附完整源码)
    查看>>
    Objective-C实现Lower-Upper Decomposition上下分解算法(附完整源码)
    查看>>
    Objective-C实现LowerCaseConversion小写转换算法(附完整源码)
    查看>>
    Objective-C实现lowest common ancestor最低共同祖先算法(附完整源码)
    查看>>
    Objective-C实现LRU 缓存算法(附完整源码)
    查看>>
    Objective-C实现LRU缓存(附完整源码)
    查看>>
    Objective-C实现LRU(least recently used)算法(附完整源码)
    查看>>
    Objective-C实现lstm prediction预测算法(附完整源码)
    查看>>
    Objective-C实现lucas数列算法(附完整源码)
    查看>>
    Objective-C实现Luhn (Mod 10)Algorithm算法(附完整源码)
    查看>>
    Objective-C实现LZW编码(附完整源码)
    查看>>
    Objective-C实现MAC桌面暗水印(附完整源码)
    查看>>
    Objective-C实现mandelbrot曼德勃罗特集算法(附完整源码)
    查看>>