一、兼容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. 使用ganymed-ssh2-build通过ssh获得远程服务器参数

    1.项目中需要检测到几台远程服务器的参数,差了很多资料,决定用的这个 2.jar包:ganymed-ssh2-build210.jar 3.原理:向远程linux服务器发送脚本命令,得到该台服务器的信 ...

  2. Remove掉Request.QueryString

    好久上博客来了,最近有点忙,有点懒. 今天在解决一个Request.QueryString 传值的问题上遇到了,当不是第一次加载时需要把Request.QueryString的值赋值为null,刚开始 ...

  3. UIP协议栈

    UIP协议栈笔记 http://blog.chinaunix.net/uid-23247944-id-2974928.html

  4. 机器学习之K近邻算法(KNN)

    机器学习之K近邻算法(KNN) 标签: python 算法 KNN 机械学习 苛求真理的欲望让我想要了解算法的本质,于是我开始了机械学习的算法之旅 from numpy import * import ...

  5. MVC入门之.Net语法学习

    本节中主要学习.Net框架性语法.开发者可以使用新语法提高编程的效率以及代码的运行效率:其本质都是“语法糖”,由编译器在编译时转成原始语法. u  自动属性 Auto-Implemented Prop ...

  6. Codeforces 582B Once Again

    http://codeforces.com/contest/582/problem/B 题目大意:给出一个序列,是由一个长度为n的序列复制T次得到的,问最长非下降子序列的长度. 思路:我们建立一个n* ...

  7. Xs and Os Referee

    Xs and Os Referee 1 def checkio(game_result): 2 winner = 'D' 3 4 for row in game_result: 5 if row[0] ...

  8. 基于微信公众平台的开发(清华大学第二讲)_Alien的笔记

    基于微信公众平台的开发(清华大学第二讲)_Alien的笔记 基于微信公众平台的开发(清华大学第二讲)

  9. SQL server 中 COUNT DISTINCT 函数

    目的:统计去重后表中所有项总和. 直观想法: SELECT COUNT(DISTINCT *) FROM [tablename] 结果是:语法错误. 事实上,我们可以一同使用 DISTINCT 和 C ...

  10. Hive 11、Hive嵌入Python

    Hive嵌入Python Python的输入输出都是\t为分隔符,否则会出错,python脚本输入print出规定格式的数据 用法为先add file,使用语法为TRANSFORM (name, it ...