【面试】web前端经典面试题试题及答案-jQuery

本文深入探讨了jQuery库的基本原理,包括源码解析、原型方法的运用、选择器的使用技巧,以及DOM操作和事件处理的实践。同时,对比了jQuery与原生JavaScript的window.onload事件和jQuery的ready函数的区别,阐述了jQuery在现代Web开发中的作用。

jquery的jq.eq(0)和jq[0]有什么区别?

待完善

  • jQuery源码

原型实际应用-jquery?

多个实例都可以共用一个方法时,说明这些方法(eg:css(), html())都是来自于一个构造函数的原型中

var $p = $('p'); 
$p.css('color', 'red'); // css是原型方法
console.log($p.html()); // html是原型方法 // 如果有多个p元素,$p.html()默认是最后一个元素的html
<body>
<div>
  <p>段落1</p>
  <p>段落2</p>
</div>

<!--<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>-->
<script>
  (function(window) {
    var jQuery = function(selector) {
      return new jQuery.fn.init(selector); // new了一个构造函数的实例
    };
    jQuery.fn = {
      css: function(key, value) {

      },
      html: function(value) {
        return '这是html';
      }
    };
    var init = jQuery.fn.init = function(selector) { // 构造函数
      var slice = Array.prototype.slice;
//      var dom = document.querySelectorAll(selector); // nodeList[p,p]:__proto__是nodeList
      var dom = slice.call(document.querySelectorAll(selector)); // [p, p]:__proto__是Array // selector转换成dom的list,然后转换成数组
      console.log(dom);
      var i, len = dom ? dom.length : 0;
      for (i = 0; i < len; i++) {
        this[i] = dom[i]; // 所有的元素都变成实例的属性
      }
      this.length = len;
      this.selector = selector || '';
    };
    init.prototype = jQuery.fn; // 构造函数的原型赋值成jQuery.fn,jQury.fn是一个js对象

    window.$ = jQuery;
  })(window);

  $p = $('p'); // 初始化实例
  console.log($p.html());

1、扩展原型
将getNodeName属性放在构造函数的原型中,不是直接给构造函数的原型赋值,而是通过$.fn赋值

$.fn.getNodeName = function() {
	return this[0].nodeName;  // this[0]可以得到上述的第一个p标签,this就是实例$p,init这个构造函数里创建了this[i];
} 

(1)好处:
①只有$会暴露在window全局变量(只暴露一个变量,不然容易造成全局变量的污染)
②将插件扩展统一到$.fn.xxx这一个接口,方便使用。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值