一、兼容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. JavaScript高级程序设计第14章表单脚本 (学习笔记)

    第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有 ...

  2. JSON基础知识

    1.什么是json •        JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) •        JSON 是轻量级的文本数据交换格式 ...

  3. clearInterval()与setInterval()的应用

    1.setInterval()按照一定的周期调用函数2.clearInterval()取消setInterval()的周期调用 例如:图片轮播中的clearInterval()与setInterval ...

  4. Taum and B'day

    //自己 def main(): t = int(raw_input()) for _ in range(t): units = 0 b, w = map(int, raw_input().strip ...

  5. Speech Module

    Speech Module 1 FIRST_TEN = ["one", "two", "three", "four", ...

  6. javascrpit开发连连看记录-小游戏

        工作之余,总想做点什么有意思的东西.但是苦于不知道做什么,也就一直没有什么动作.在一个午饭后,跟@jedmeng和@墨尘聊天过程中,发现可以写一些小东西来练练手,有以下几点好处:     1. ...

  7. Javascript构造函数学习

    我们经常会用JS的构造函数实现Java语言中的继承,今天整理一下构造函数的相关属性及说明. 下面定义一个构造函数: function Person(name, sex, age) { this.nam ...

  8. 04747_Java语言程序设计(一)_第6章_图形界面设计(二)

    例6.1声明一个面板子类,面板子类对象有3个选择框. class Panel1 extends JPanel { JCheckBox box1, box2, box3; Panel1() { box1 ...

  9. 浅析libev的ev_signal过程

    ev_signal是libev提供的对信号处理的一个模块,基本上是对sigaction函数的一个封装,并将本身是异步的信号转化为同步.ev_signal的使用十分简单: #include <ev ...

  10. functools:管理函数工具(部分)

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #functools:管理函数工具 #作用:处理其他函数的函数 #版 ...