javascript - jQuery 如何调用一个对象 $

标签 javascript jquery design-patterns

<分区>

  1. 如果 $ 是一个对象,那么 jQuery 如何使用括号 () 调用它,例如 $('#MYdIV')。这是我的第一个也是最重要的问题。

  2. 我正在尝试学习设计模式和创建对象的底层机制。所以我想创建一个库,当用户键入 myLibrary({option1:true}); 时,他将能够在不使用关键字 new 的情况下实例化一个对象。就像 jquery 和这个:https://github.com/bendc/animateplus/blob/master/animate.js 在此示例中,他没有使用关键字 newthis。他只是在创建 IIFE animate,它返回另一个同名函数。我不知道他是怎么做到的。 animate 是否绑定(bind)到全局对象?

最佳答案

jQuery$ 只是一个函数。考虑以下生成具有类似行为的对象的示例。
当然,jQuery 有更复杂和智能的结构,这只是一个例子:

var not$ = function(o) {
  var result = document.querySelectorAll(o);
  
  result.customInnerText = function(text) {
      if (text === undefined) {
        return document.querySelector(o).innerText;
      } else {
        document.querySelector(o).innerText = text;
      }     
  };
  result.customClickHandler = function(callback) {
      document.querySelector(o).addEventListener('click', callback);
  };

  return result;
};
not$.customConsoleLog = function(text) {
    console.log(text);
};

not$("a").customClickHandler(function() {
  var exampleText = not$("#title").customInnerText();
  not$("#text").customInnerText(exampleText + "It works!");

  not$.customConsoleLog(not$("p").length);
  not$.customConsoleLog(not$("p")[0]);
});
 
<a href="#">Click me!</a>

<p id="title">Example:</p>
<p id="text">Check!</p>

关于javascript - jQuery 如何调用一个对象 $,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33471148/

相关文章:

javascript - 如何找到javascript重定向到另一个页面的位置?

javascript - ES6 模块 - 为什么命名的 const 导出不是只读的

javascript - 带有 webpack 的 Paper.js

php - 使用ajax和jquery删除div id并从数据库中删除

android - 在客户端和网络之间设计一个 "task"层来组织同步网络/api 调用

java - 这种基于 Java 状态的设计模式的名称是什么?

JavaScript - 为什么我会收到意外的未捕获错误 'length' 、 'splice' 等未定义的错误?

javascript - 在窗口调整大小时添加和删除 jQuery 插件

javascript - 转换元素在 Bootstrap 中不起作用

java - 构建解析器类的最佳方式