这段时间在写一个预览图片的插件,

被我老大说了无数次了,不多说啥,说多了都是泪

昨天看着我的代码他说你用了extend,那你知道是什么意思吗

我只知道是扩展的意思,瞬间觉得自己弱爆了

真的

然后今天看深究深究吧

$.extend():可以合并多个对象,不行你看,这个也用到过

今天在看ES6,然后加上最近一个review我发现web端可以用jQuery,来扩展对象,那因为我最近也在写小程序,就发现小程序并不能用jQuery,那我要是想扩展合并对象的话要怎么办呢,今天刚好看到一个Object.assign()

var target={a:}
var srouce={a:,b:,c:} var obj=Object.assign({},target,source)
最后得到的obj是等于{a:,b:,c:}

也是跟extend一样的效果,也是碰到相同的属性的时候,后面的属性会覆盖前面的属性

我前面加了一个{}空对象,也是跟extend一样,其实加不加都无所谓

          var defaults={
multis:
};
var options = $.extend(opts,defaults, {});
console.log(options.multis);
opts = jQuery.extend({
imgType: ["gif", "jpeg", "jpg", "bmp", "png"], // 布局方式 默认方式是平铺
present: 'full-fill',
multi: ,
width: '',
height: '',
}, opts || {});

options可以拿到defaults和opts的值

这个要说明一下,要是重复的属性,会被覆盖掉

           var defaults={
multis:,
multi:
};
var options = $.extend(opts,defaults, {});
console.log(options.multi);
opts = jQuery.extend({
imgType: ["gif", "jpeg", "jpg", "bmp", "png"], // 布局方式 默认方式是平铺
present: 'full-fill',
multi: ,
width: '',
height: '',
}, opts || {});

这样的时候options.multi会等于10,后面的值会覆盖前面的

还有一个深层合并的,加了一个true,这个还没有用到过

先是没有加true的:

 var test=$.extend({name:'lei',location:{city:'beijing'}},{last:'wen',location:{state:'china'}});
console.log(test) 得到了 Object
  last: "wen"
  location: Object
        state: "china"
        __proto__: Object
  name: "lei"
  __proto__: Object__defineGetter__: __defineGetter__()__defineSetter__: __defineSetter__()__lookupGetter__: __lookupGetter__()__lookupSetter__: __lookupSetter__()constructor: Object()hasOwnProperty: hasOwnProperty()isPrototypeOf: isPrototypeOf()propertyIsEnumerable: propertyIsEnumerable()toLocaleString: toLocaleString()toString: toString()valueOf: valueOf()get __proto__: __proto__()set __proto__: __proto__()

要是加了true呢

  var test=$.extend(true,{name:'lei',location:{city:'beijing'}},{last:'wen',location:{state:'china'}});
console.log(test) Object
last:"wen"
location:
Object
city:"beijing"
state:"china"
__proto__ :Object
name :"lei"
__proto__:Object

$.extend(还可以添加静态方法)这就是jquery.fn.extend{imgPreview:function()}这个就是我现在用到的了

$.extend({

  add:function(a,b){return a+b},

  minu:function(a,b){return a-b}

})

var num=$.add(,)+$.minu(,);

console.log(num)//

然后刚才偶然间又看到某个大神的文章

然后上面有一段代码是这样的,我觉得特别通俗易懂

;(function($){
$.fn.extend({
Firstplus: function() {}
}); //这样写的话插件的使用方法就是:$('div').Firstplus(); $.extend({
Secondplus: function() {}
});
//这样写的话插件的使用方法就是:$.Secondplus();
})($);

 这样就让我瞬间明白写插件的时候调用的方式

extend的更多相关文章

  1. $.extend()的实现源码 --(源码学习1)

    目标: $.extend({         add:function(a,b){             return a + b;         }     }) console.log($.a ...

  2. 图片放大功能插件及jquery.extend函数理解

    前端时间,产品提出社区评论中的图片需要有放大功能.感觉可以共用,所以就想整合一个插件,过程中也借鉴了一些例子. 分析下自己的代码思路: var scaleImg = function(opts) { ...

  3. $.extend({},defaults, options) --(初体验三)

    1.$.extend({},defaults, options) 这样做的目的是为了保护包默认参数.也就是defaults里面的参数. 做法是将一个新的空对象({})做为$.extend的第一个参数, ...

  4. jquery.fn.extend与jquery.extend--(初体验二)

    1.jquery.extend(object); 为扩展jQuery类本身.为类添加新的方法. jquery.fn.extend(object);给jQuery对象添加方法. $.extend({ a ...

  5. vue.mixin与vue.extend

    vue.mixin 全局注册一个混合,影响注册之后所有创建的每个 Vue 实例.谨慎使用全局混合对象,因为会影响到每个单独创建的 Vue 实例(包括第三方模板).大多数情况下,只应当应用于自定义选项, ...

  6. jQuery为开发插件提拱了两个方法:jQuery.fn.extend(); jQuery.extend();

    jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(); jQuery.extend(); jQuery.fn jQuery.fn = jQuery.prototype ...

  7. jQuery中的$.extend方法来扩展JSON对象及合并,方便调用对象方法

    $.extend方法可以扩展JSON对象,用一个或多个其他对象来扩展一个对象,返回被扩展的对象. 例一 合并 settings 和 options,修改并返回 settings var setting ...

  8. jQuery.extend 函数详解

    JQuery的extend扩展方法:      Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解.      一.Jquery的扩展方 ...

  9. JavaScript中实现extend()方法

    var male = { sex: "male" }; var xiaoming = { name: "xiaoming", school: "xin ...

随机推荐

  1. Android之SAX解析XML

    一.SAX解析方法介绍 SAX(Simple API for XML)是一个解析速度快并且占用内存少的XML解析器,非常适合用于Android等移动设备. SAX解析器是一种基于事件的解析器,事件驱动 ...

  2. windows 7(32/64位)GHO安装指南(U盘制作篇)~

    本篇接着上篇的介绍,为同学讲解U盘启动盘的制作.虽然本篇大白菜的官网上也有类似的教程,但是为了完整性,我将在这里为大家细细的讲解.在这里说一下,系统包和软件包的下载大家可以自行下载,很简单的,小主就不 ...

  3. windows 7(32/64位)GHO安装指南(序篇)~

    大家好,本人是高三刚毕业,即将踏入校园的程序猿~我写这篇文章呢,主要是想巩固一下之前对于电脑的基础知识理论,也希望能帮助没有电脑基础的同学能维护一下自己的电脑,要是能帮助女生修电脑那就是更好啦~~哈哈 ...

  4. Raspberry Pi(树莓派)上安装Raspbian(无路由器,无显示器)

    一. 准备工作 1. 树莓派主板 型号:树莓派3 B型 处理器:四核64位ARM Cortex-A53 CPU 内核架构:ARMv8 2. 一张大于8G的TF卡(本人用的是32G的,也作为PiLFS用 ...

  5. Android Bitmap 和 ByteArray的互相转换

    Android Bitmap 和 ByteArray的互相转换 移动平台图像处理,需要将图像传给native处理,如何传递?将bitmap转换成一个 byte[] 方便传递也方便cpp代码直接处理图像 ...

  6. xamarin绑定原生库的一些坑

    最近一个项目涉及到较多的第三方库的绑定技术,中间遇到了几个坑,记录下来与大家分享 绑定Jar库 monoandroid对原生库的调用都通过Android.Runtime.JNIEnv进行调入(http ...

  7. 在 Ubuntu 15.04 中使用 ubuntu-make、Eclipse 4.4、Java 8 以及 WTP

    Ubuntu 今天发布新版本了 其实昨天(2015-04-23)我就看到了 Ubuntu 发布新版本的新闻,下班后回家的第一件事就是访问 Ubuntu 的官网,很可惜,没有提供下载.今天(2015-0 ...

  8. ValueInjecter----最好用的OOM(以微信消息转对象举例)

    使用数据实体的好处我这里就不多说了,但大家享受这些好处的时候,难免也对那些琐碎的赋值代码感到厌烦,基于此,我认为掌握一个oom的使用,还是很有必要的. 这种类型的工具有很多,比如automapper, ...

  9. Python的魔法函数之 - __len__,__getitem__,__setitem__,__delitem__

    # 对象作为len()函数的参数是必须实现该方法 __len__ # 使用类似字典方式访问成员时必须实现 dic['pro_name'] __getitem__ # 使用类似字典方式设置成员时必须实现 ...

  10. SQLSERVER误删除了Windows登录用户验证方式使用Windows身份验证的解决方法

    SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法 今天看到这篇文章:没有了SA密码,无法Windows集成身份登录,DBA怎么办? 想起来之前着急哥问我的一个问 ...