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

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

昨天看着我的代码他说你用了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——eclipse下运行android项目报错 Conversion to Dalvik format failed with error 1解决

    在eclipse中导入android项目,项目正常没有任何错误,但是运行时候会报错,(clean什么的都没用了.....)如图: 百度大神大多说是jdk的问题,解决: 右键项目-Properties如 ...

  2. 编译器开发系列--Ocelot语言7.中间代码

    Ocelot的中间代码是仿照国外编译器相关图书Modern Compiler Implementation 中所使用的名为Tree 的中间代码设计的.顾名思义,Tree 是一种树形结构,其特征是简单, ...

  3. CentOS7之按时间段截取指定的Tomcat日志到指定文件的方法

    CentOS7之按时间段截取指定的Tomcat日志到指定文件的方法 sed -n '/2016-11-02 15:00:/,/2016-11-02 15:05:/p' catalina.out > ...

  4. 使用gulp解决RequireJS项目前端缓存问题(二)

    1.前言 这一节,我们主要解决在上一节<使用gulp解决RequireJSs项目前端缓存问题(一)>末尾提到的几个问题: 对通过require-config.js引入的js文件修改后,没有 ...

  5. 设计模式之工厂模式VS抽象工厂

    一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...

  6. 烂泥:redis3.2.3安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前一段时间写过一篇codis集群的文章,写那篇文章主要是因为当时的项目不支持redis自 ...

  7. TCP通信

    //网络套接字编程实例,服务器端,TCP通信. #include <WinSock2.h> #pragma comment(lib,"ws2_32.lib") #inc ...

  8. fedora上部署ASP.NET——(卡带式电脑跑.NET WEB服务器)

    andrew,20130601,guilin 本文记录在树莓派(fedora)上部署ASP.NET MVC2 的过程. 本文共分为六部分,分别是前置条件,Apache的安装,Mysql的安装,安装mo ...

  9. Spark笔记:复杂RDD的API的理解(下)

    本篇接着谈谈那些稍微复杂的API. 1)   flatMapValues:针对Pair RDD中的每个值应用一个返回迭代器的函数,然后对返回的每个元素都生成一个对应原键的键值对记录 这个方法我最开始接 ...

  10. Android下/data/data/<package_name>/files读写权限

    今天将更新模块拿到android上面测试的时候,发现在创建writablepath.."upd/"目录的时候出现Permission Denied提示BTW:我使用的是lfs来创建 ...