当前位置:首页 > JavaScript

js实现jquery extend

2026-03-16 01:42:10JavaScript

实现 jQuery 的 extend 功能

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

js实现jquery extend

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
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

jquery库

jquery库

jQuery 库简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。其核心特点是“Write Less, Do More”,…

jquery和vue的区别

jquery和vue的区别

jQuery 和 Vue.js 的区别 jQuery 和 Vue.js 是两种不同的前端技术,分别适用于不同的场景和开发需求。以下是它们的主要区别: 设计理念 jQuery 是一个轻量级的 Java…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

jquery作用

jquery作用

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