当前位置:首页 > JavaScript

js实现jquery extend

2026-03-16 01:42:10JavaScript

js实现jquery extend

js实现jquery extend

实现 jQuery 的 extend 功能

jQuery 的 extend 方法用于合并多个对象的属性到目标对象中。以下是一个纯 JavaScript 的实现方式:

function extend() {
  let target = arguments[0] || {};
  let length = arguments.length;
  let deep = false;
  let i = 1;

  if (typeof target === 'boolean') {
    deep = target;
    target = arguments[1] || {};
    i = 2;
  }

  if (typeof target !== 'object' && typeof target !== 'function') {
    target = {};
  }

  for (; i < length; i++) {
    let options = arguments[i];
    if (options != null) {
      for (let name in options) {
        if (options.hasOwnProperty(name)) {
          let src = target[name];
          let copy = options[name];

          if (deep && copy && typeof copy === 'object') {
            let clone = src && typeof src === 'object' ? src : Array.isArray(copy) ? [] : {};
            target[name] = extend(deep, clone, copy);
          } else if (copy !== undefined) {
            target[name] = copy;
          }
        }
      }
    }
  }

  return target;
}

使用方法

// 浅拷贝
let obj1 = { a: 1 };
let obj2 = { b: 2 };
let result = extend(obj1, obj2);
// result: { a: 1, b: 2 }

// 深拷贝
let deepObj1 = { a: { b: 1 } };
let deepObj2 = { a: { c: 2 } };
let deepResult = extend(true, deepObj1, deepObj2);
// deepResult: { a: { b: 1, c: 2 } }

功能说明

  • 第一个参数为 true 时表示深拷贝
  • 可以合并多个对象的属性
  • 会跳过 nullundefined
  • 支持对象和数组的递归合并
  • 返回合并后的目标对象

注意事项

  • 该实现不处理循环引用的情况
  • 对于特殊对象类型(如 Date、RegExp 等)会进行浅拷贝
  • 原型链上的属性不会被拷贝

标签: jsjquery
分享给朋友:

相关文章

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

jquery作用

jquery作用

jQuery的作用概述 jQuery是一个快速、简洁的JavaScript库,主要用于简化HTML文档遍历、事件处理、动画设计和Ajax交互等操作。其核心目标是让开发者以更少的代码完成更多功能,同时解…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

jquery数组

jquery数组

jQuery 数组操作 jQuery 提供了多种方法来操作数组或类数组对象(如 jQuery 对象集合)。以下是常见的数组操作方法: 遍历数组 使用 $.each() 方法可以遍历数组或对象: v…

jquery 显示

jquery 显示

jQuery 显示元素的方法 使用 jQuery 显示隐藏的元素可以通过多种方式实现,以下是几种常见的方法: 显示元素的基本方法 $("#element").show(); 这会直接将匹配的元素设置…