当前位置:首页 > VUE

vue实现$.extend

2026-01-12 18:43:39VUE

实现类似 jQuery 的 $.extend 功能

在 Vue 中可以通过多种方式实现类似 jQuery 的 $.extend 功能,用于深度合并对象。以下是几种常见方法:

使用 Object.assign 进行浅合并

const obj1 = { a: 1 };
const obj2 = { b: 2 };
const merged = Object.assign({}, obj1, obj2);
// 结果: { a: 1, b: 2 }

使用展开运算符进行浅合并

const obj1 = { a: 1 };
const obj2 = { b: 2 };
const merged = { ...obj1, ...obj2 };
// 结果: { a: 1, b: 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: 1, nested: { x: 10 } };
const obj2 = { b: 2, nested: { y: 20 } };
const merged = deepExtend({}, obj1, obj2);
// 结果: { a: 1, b: 2, nested: { x: 10, y: 20 } }

使用 lodash 的 merge 方法

import { merge } from 'lodash';

const obj1 = { a: 1, nested: { x: 10 } };
const obj2 = { b: 2, nested: { y: 20 } };
const merged = merge({}, obj1, obj2);
// 结果: { a: 1, b: 2, nested: { x: 10, y: 20 } }

在 Vue 组件中使用 mixins

Vue 本身提供了 mixins 功能,可以用于合并组件选项:

vue实现$.extend

const mixin = {
  data() {
    return {
      message: 'hello',
      foo: 'abc'
    }
  }
}

new Vue({
  mixins: [mixin],
  data() {
    return {
      message: 'goodbye',
      bar: 'def'
    }
  },
  created() {
    console.log(this.$data)
    // 结果: { message: 'goodbye', foo: 'abc', bar: 'def' }
  }
})

注意事项

  • 浅合并只处理第一层属性,深合并会递归处理所有嵌套对象
  • 数组通常不会被深度合并,而是会被覆盖
  • 使用 lodash 的 merge 函数可以处理更复杂的合并场景
  • 在 Vue 中修改响应式对象时应该使用 Vue.set 或展开运算符确保响应性

标签: vueextend
分享给朋友:

相关文章

vue全选实现

vue全选实现

Vue 全选实现方法 在 Vue 中实现全选功能通常涉及数据绑定和事件处理。以下是几种常见的实现方式: 基础实现方式 <template> <div> <…

通过vue实现

通过vue实现

Vue 实现方法 安装 Vue 确保已安装 Node.js 和 npm,通过以下命令安装 Vue CLI: npm install -g @vue/cli 创建 Vue 项目 使用 Vue CLI…

vue实现表白

vue实现表白

Vue 实现表白页面 使用 Vue 可以快速创建一个动态、交互式的表白页面。以下是一个简单的实现方案: 基础结构 创建一个 Vue 项目或单文件组件,包含以下核心部分: <template&…

甘特图vue实现

甘特图vue实现

甘特图 Vue 实现方法 使用开源库 vue-ganttastic 安装依赖: npm install vue-ganttastic 基础实现代码: <template> <…

vue实现抽奖

vue实现抽奖

Vue 实现抽奖功能 基本抽奖逻辑 创建一个Vue组件,包含奖品列表、抽奖按钮和结果显示区域。使用随机数生成器选择奖品。 <template> <div> <…

vue键盘实现

vue键盘实现

监听键盘事件 在Vue中监听键盘事件可以通过v-on指令或@缩写实现。常见的键盘事件包括keydown、keyup和keypress。例如监听回车键事件: <template> &l…