当前位置:首页 > VUE

vue实现$.extend

2026-02-10 01:57:47VUE

实现类似 $.extend 的功能

在 Vue 中实现类似 jQuery 的 $.extend 功能,可以通过 JavaScript 的原生方法或第三方工具库完成。$.extend 主要用于对象的浅拷贝或深拷贝合并。

使用 Object.assign 实现浅拷贝

Object.assign 是 JavaScript 的原生方法,可以实现对象的浅拷贝合并。

const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const merged = Object.assign({}, obj1, obj2);
console.log(merged); // { a: 1, b: 3, c: 4 }

使用 lodash.merge 实现深拷贝

如果需要深拷贝合并对象,可以使用 lodash.merge

安装 lodash:

npm install lodash

使用示例:

import { merge } from 'lodash';

const obj1 = { a: { b: 1 } };
const obj2 = { a: { c: 2 } };
const merged = merge({}, obj1, obj2);
console.log(merged); // { a: { b: 1, c: 2 } }

自定义深拷贝合并函数

如果不依赖第三方库,可以手动实现一个深拷贝合并函数。

function deepExtend(target, ...sources) {
  if (!sources.length) return target;
  const source = sources.shift();

  if (isObject(target) && isObject(source)) {
    for (const key in source) {
      if (isObject(source[key])) {
        if (!target[key]) Object.assign(target, { [key]: {} });
        deepExtend(target[key], source[key]);
      } else {
        Object.assign(target, { [key]: source[key] });
      }
    }
  }

  return deepExtend(target, ...sources);
}

function isObject(item) {
  return item && typeof item === 'object' && !Array.isArray(item);
}

// 使用示例
const obj1 = { a: { b: 1 } };
const obj2 = { a: { c: 2 } };
const merged = deepExtend({}, obj1, obj2);
console.log(merged); // { a: { b: 1, c: 2 } }

在 Vue 组件中使用

在 Vue 组件中,可以将上述方法用于合并 dataprops 或其它对象。

vue实现$.extend

export default {
  data() {
    return {
      obj1: { a: 1, b: 2 },
      obj2: { b: 3, c: 4 }
    };
  },
  created() {
    this.mergedData = Object.assign({}, this.obj1, this.obj2);
    console.log(this.mergedData); // { a: 1, b: 3, c: 4 }
  }
};

总结

  • 浅拷贝合并使用 Object.assign
  • 深拷贝合并推荐使用 lodash.merge
  • 手动实现深拷贝合并函数适用于不依赖第三方库的场景。

标签: vueextend
分享给朋友:

相关文章

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(如…

vue怎么实现

vue怎么实现

Vue 实现方法 Vue 是一个流行的前端框架,用于构建用户界面。以下是几种常见的实现方法: 数据绑定 使用 v-model 指令实现双向数据绑定,适用于表单输入元素。 <input v-m…

vue实现数组

vue实现数组

Vue 实现数组操作的方法 在 Vue 中,数组的操作需要特别注意响应式的问题。Vue 提供了一些方法来确保数组的变动能够触发视图更新。 响应式数组方法 Vue 对以下数组方法进行了封装,确保它们能…

vue computed实现

vue computed实现

计算属性的基本用法 在Vue中,计算属性通过computed选项定义,用于声明依赖于其他属性的动态值。计算属性基于它们的依赖进行缓存,只有依赖发生变化时才会重新计算。 new Vue({ dat…

vue实现白板

vue实现白板

Vue实现白板功能 使用Vue实现白板功能可以通过HTML5的Canvas API结合Vue的响应式特性来完成。以下是实现白板功能的关键步骤: 安装依赖 在Vue项目中安装必要的依赖,如vue-dr…

vue实现加减

vue实现加减

Vue 实现加减功能 在 Vue 中实现加减功能可以通过数据绑定和事件监听来完成。以下是一个简单的实现方法: 模板部分 <template> <div> <…