一、兼容AMD、CommonJS和普通JS的写法

(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// CommonJS
factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
console.log('请允许我偷个懒,省略这个函数里的一堆代码');
}));

看到这里,其实自定义回调函数的写法也就出来了,但是为了凑出一篇形式上像样的博文,请允许我放到第三节来说回调函数(哎!别扔鸡蛋!)。

二、使用join方法把数组转为字符串

以前见过join方法,但是一直没用过,不熟,不知道它到底是干啥的,也不知道为啥要用它,直到看到下面这段代码:

return (document.cookie = [
encode(key), '=', stringifyCookieValue(value),
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.secure ? '; secure' : ''
].join(''));

在这个地方,这个document.cookie的值必须要是字符串,而且格式是这样的变态和销魂:

//格式:
name=value; expires=expiration_time; path=domain_path;domain=domain_name;secure //举个栗子:
name=value;expires=Mon,22-Jan-07 07:10:24 GMT;domain=.wrox.com; path=/;secure

所以document.cookie的值需要通过很多三目运算计算后来获得,如果使用字符串来不停的“加等于”完全做不到,而javascript的数组里是可以放表达式的啊,计算出的结果会成为数组的一个项的值,最后用join('')转成字符串。

所以,以后遇到需要为一个变量设置一个字符串值,并且这个值是由很多个子值连接起来的,并且子值还需要根据情况做变化的情景时,果断的使用数组+三目运算符+join('')的组合吧!

三、javascript自定义回调函数的写法

用过jQuery的animation动画方法的人,对于那个方法里的回调函数应该都会觉得好用(大神手下留情,毕竟凑个开头不容易)。

那么我们自己能不能实现高大上的回调函数呢?

废话不说,直接上代码吧:

/*回调函数写法一:*/
(function(fa){
if(0){
console.log('没有执行回调函数')
}else{
fa();
}
}(function fss(){console.log('执行了回调函数的输出')})) //执行了回调函数的输出 /*回调函数写法二:*/
function foo(fa){
if(0){
console.log('没有执行回调函数');
}else{
fa();
}
}; function fss(){
console.log('执行了回调函数的输出');
} foo(fss); //执行了回调函数的输出

有兴趣的童鞋可以复制代码放到chrome的console控制台里去执行一下。

读jquery.cookie.js源码学到的几个技巧的更多相关文章

  1. Jquery.cookie.js 源码和使用方法

    jquery.cookie.js源码和使用方法 jQuery操作cookie的插件,大概的使用方法如下 $.cookie(‘the_cookie’); //读取Cookie值$.cookie(’the ...

  2. 亚马逊左侧菜单延迟z三角 jquery插件jquery.menu-aim.js源码解读

    关于亚马逊的左侧菜单延迟,之前一直不知道它的实现原理.梦神提到了z三角,我也不知道这是什么东西.13号那天很有空,等领导们签字完我就可以走了.下午的时候,找到了一篇博客:http://jayuh.co ...

  3. jquery.unobtrusive-ajax.js源码阅读

    /*! ** Unobtrusive Ajax support library for jQuery ** Copyright (C) Microsoft Corporation. All right ...

  4. 读vue-0.6-text-parser.js源码

    提取字符串中的表达式 var BINDING_RE = /\{\{(.+?)\}\}/; function parse(text) { // 找不到返回null if (!BINDING_RE.tes ...

  5. 读vue-0.6-observer.js源码

    实现监听数组方法 var ArrayProxy = Object.create(Array.prototype), methods = ['push','pop','shift','unshift', ...

  6. 读vue-0.6-filters.js源码

    'abc' => 'Abc' function capitalize (value) { if (!value && value !== 0) return '' value = ...

  7. 读vue-0.6-utils.js源码

    typeOf typeOf: function (obj) { return toString.call(obj).slice(8, -1) } 每个对象都有一个 toString() 方法,当对象被 ...

  8. 学会读JQuery等JS插件源码

    看了 http://my249645546.iteye.com/blog/1716629 上的这篇文章感觉挺好的,所以决定转过来,谢谢这位博主. 很多人觉得jquery.ext等一些开源js源代码 十 ...

  9. jQuery整体架构源码解析(转载)

    jQuery整体架构源码解析 最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性, ...

随机推荐

  1. 【Nutch2.3基础教程】集成Nutch/Hadoop/Hbase/Solr构建搜索引擎:安装及运行【集群环境】

    1.下载相关软件,并解压 版本号如下: (1)apache-nutch-2.3 (2) hadoop-1.2.1 (3)hbase-0.92.1 (4)solr-4.9.0 并解压至/opt/jedi ...

  2. Block(二)内存管理与其他特性

    一.block放在哪里 我们针对不同情况来讨论block的存放位置: 1.栈和堆 以下情况中的block位于堆中: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  3. Oracle left查询案例

    )) summoney from( select t2.ano,d.dmoney from ( select t1.*,c.cno from( select a.ano,b.bno from t_a ...

  4. .NET自动字符编码识别程序库 NChardet

    什么是NChardet NChardet是mozilla自动字符编码识别程序库chardet的.NET实现,它移植自jchardet,chardet的java版实现,可实现对给定字符流的编码探测. N ...

  5. wikioi1191 数轴染色

    题目描述 Description 在一条数轴上有N个点,分别是1-N.一开始所有的点都被染成黑色.接着 我们进行M次操作,第i次操作将[Li,Ri]这些点染成白色.请输出每个操作执行后 剩余黑色点的个 ...

  6. CentOS下安装无线网卡驱动 (转)

    1. 确定自己的网卡和内核版本:lspci | grep Network  #根据输出的信息确定网卡的型号.uname -a             #确定内核版本 2. 配置yum使用RPMForg ...

  7. Poj2761-Feed the dogs(伸展树求名次)

    Description Wind loves pretty dogs very much, and she has n pet dogs. So Jiajia has to feed the dogs ...

  8. softlayerFastUploadVHDtoBS

    Object Storage Uploader Overview We’ve recently added the option to import customer-supplied Virtual ...

  9. OPStackComputeNodeMaintain

    1,yum -y install openstack-nova-compute计算节点配置完成后 其配置文件默认非注释行内容如下;

  10. QT 4.7支持中文(QT4.7)(中文)(makeqpf)

    QT 4.7支持中文(QT4.7)(中文)(makeqpf) 摘要: QT4.7.0在移植到开发板上的时候,中文支持是必不可少的,如何让QT支持中文,如何制作QT支持的字体文件,如何使QT UI编辑器 ...