热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

明白jquery的$.extend

邃晓jquery的$.extend本日在写js插件历程当中须要运用扩大对象的要领,便想到了jQuery.extend这个要领,但又不甚了解,故去查了下官方API文档,自身也举行了响

邃晓jquery的$.extend

本日在写js插件历程当中须要运用扩大对象的要领,便想到了jQuery.extend这个要领,但又不甚了解,故去查了下官方API文档,自身也举行了响应尝试,现将所得总结以下:

$.extend和$.fn.extend的相干用法

jQuery.fn

jQuery.fn = jQuery.prototype = {
   init: function( selector, context ) {//….
//……
};

由上述代码能够看出$.fn是相当于$.prototype的,而jQuery是一个封装很好的类,因而当我们运用$.fn时相当于给jQuery这个类增加成员函数,增加后jQuery类的实例即能够运用这个“成员函数”,比方当我们运用$(“#input-demo”)时相当于创建了一个jQuery实例,当我们要开辟一个插件时,比方做一个特别的编辑框,当它猎取核心时弹框显现当前输入框的内容,我们能够做以下操纵:

$.fn.extend({
alertContentWhenFocus: function() {
$(this).on('focus', function() {
alert($(this).val());
)
}
})
$("#input-demo").alertContentWhenFocus();

$.extend(object)

当想给jQuery类增加静态要领时,我们能够做以下操纵:

$.extend({
min: function(x, y) {return x max: function(x, y) {return x > y ? x : y;}
})

jQuery.extend([deep], target , object1 , objectN );

该要领可用于一个或别的多个对象来扩大个中一个对象,并返回被扩大的对象,当我们供应两个或两个以上的对象给$.extend时,对象一切的属性将会增加到目的对象,因而目的对象的参数将会被修正,若我们想保存原对象,我们能够通报一个空对象作为目的对象。当目的对象为空时,jQuery对象将会被默以为目的对象,这时候相当于我们在jQuery的定名空间下增加新的功用,这是罕见的插件开辟形式。

  • deep:
    可选属性,当其值为true时,递归兼并(又叫做深拷贝),当缺省时默以为false,是不会举行递归的兼并操纵的,但不可第一个参数通报false

  • target:
    目的对象,将附加对象所包括的分外属性通报给目的对象作为新的参数,假如它是唯一的参数,这也为著目的参数被省略,此时,jQuery对象自身将被默以为目的对象,将扩大jQuery的定名空间,当我们想向jQuery中增加新函数时须要用到

  • object1:一个对象,它包括分外的属性兼并到第一个参数 objectN:包括分外的属性兼并到第一个参数

实例

var object = $.extend({}, object1, object2);

兼并object1和object2对象,并在不修正object1对象的状况,兼并后效果将会赋值给object

var settings = {first:'hello', second: 'world'};
var optiOns= {first:'hello', second: 'Javascript',third: 'nodeJs'};
var results = $.extend({}, settings, options);

输出:results 为 {first: “hello”, second: “Javascript”, third: “nodeJs”}

$.extend(obj1,obj2)

兼并两个对象,并修正第一个对象

var obj1 = {first: 1, second: {height: 178, weight: 70,length:100}};
var obj2 = {second: {height:180, weight:65, width: 90}, third: 90};
$.extend(obj1, obj2);

输出效果为:{first: 1, second: {height:180,weight:65, width: 90}, third: 90}

仔细的读者能够会发明,输出的效果和我们料想的效果彷佛有点差别,输出效果的second属性与目的对象的second属性比拟少了length这个属性,原因是在这类状况下,$.extend()的兼并操纵不是递归的,这意味着当假如目的对象的属性自身是一个对象或许数组,那末第二个对象雷同的key属性的value值将会掩盖第一个对象的value值,申明两个对象雷同key的value值不是兼并的关联,而是掩盖与被掩盖的关联。

$.extend(true,obj1,obj2)

当第一个值为true时,那末在对象上将会举行递归的兼并,而不是简朴的替代关联了,如许说能够有点深邃,下面看个例子就邃晓了。

var obj1 = {first: 1, second: {height: 178, weight: 70}};
var obj2 = {second: {height:180, weight: 65, width: 90}, third: 90};
$.extend(true,obj1,obj2)

输出效果为:{first: 1, second: Object, third: 90}

有注重的读者应该会发明,这个例子和上述的例子基本是雷同的,但效果倒是我们料想的效果了,当$.extend()的第一个参数为true时,在对象实行的兼并将会是递归的兼并,是比较兼并的,而不是简朴的替代与掩盖。

[跋文]:这篇博文一样消费了挺久的时候,是自身在事情空闲之余抽闲征采材料创作的。在撰写的历程当中,我发明一个征象,一个并不难的知识点,若自身在网上征采材料看懂邃晓并不须要消费若干时候,但如果要将自身所邃晓撰写成博文却要难上数倍,首先要理清自身表达的思绪,要将自身邃晓的历程梳理清晰,由浅至深连系例子将这个知识点剖析透辟,以求读者在浏览这篇文章的历程当中能消费更短的时候读懂。我不是一个智慧的人,所以我看邃晓一个知识点须要消费的工夫能够会比其他人更长些,因而写出来的东西每每烦琐些,愿望这篇博文对人人有所协助。以上皆个人鄙意,请笑纳!


推荐阅读
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
author-avatar
爱吃橘子的金XiaRui
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有