当前位置:首页 > JavaScript

js实现$(window)

2026-03-15 10:14:37JavaScript

在JavaScript中实现类似jQuery的$(window)功能,可以通过原生方法或简单封装实现。以下是几种常见方法:

直接使用原生window对象

原生JavaScript中window是全局对象,无需封装即可直接使用:

js实现$(window)

window.addEventListener('resize', function() {
  console.log('Window resized');
});

简单封装为$函数

若需要模拟jQuery风格,可创建如下封装:

js实现$(window)

const $ = function(selector) {
  if (selector === 'window') {
    return {
      on: (event, callback) => window.addEventListener(event, callback),
      off: (event, callback) => window.removeEventListener(event, callback),
      width: () => window.innerWidth,
      height: () => window.innerHeight
    };
  }
  // 其他选择器处理...
};

// 使用示例
$('window').on('resize', () => console.log('Resized'));

完整jQuery风格实现

更完整的实现可包含DOM元素选择:

const $ = function(selector) {
  if (selector === window || selector === 'window') {
    return {
      on: function(events, handler) {
        events.split(' ').forEach(e => window.addEventListener(e, handler));
      },
      off: function(events, handler) {
        events.split(' ').forEach(e => window.removeEventListener(e, handler));
      },
      trigger: function(event) {
        window.dispatchEvent(new Event(event));
      }
    };
  }
  // 其他选择器逻辑...
};

现代ES6模块化方案

使用类封装实现:

class JQWindow {
  static on(event, callback) {
    window.addEventListener(event, callback);
  }

  static off(event, callback) {
    window.removeEventListener(event, callback);
  }

  static get width() {
    return window.innerWidth;
  }
}

// 使用方式
JQWindow.on('scroll', () => console.log('Scrolling'));

注意事项

  • 原生window对象已包含所有浏览器API,如window.innerWidthwindow.scrollY
  • 事件监听优先使用addEventListener而非onresize等属性
  • 移动端需考虑visualViewportAPI处理虚拟键盘等情况

标签: jswindow
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…