SlideShare a Scribd company logo
Koubei F2E 展炎
  2010.12.20
平板电脑市场份额
• 今年,苹果仍占据平板电脑市场的绝对领
  导地位
• 2011年,苹果iPad平板电脑的市场份额将达
  到53%,而谷歌Android平板电脑的市场份
  额将达到32.5%。
• 2012年,苹果iPad平板电脑的市场份额将达
  到44%,而谷歌Android平板电脑紧随其后
  ,占据39%的市场份额。(Win 7平板电脑、RIM的Playbook平板
 电脑、惠普webOS平板电脑将共同占据余下17%的市场份额。)
Facebook添加电子商务功能意欲比
          肩eBay
• Facebook正在竭力鼓动达美航空、彭尼零售
  商店等企业在其网站上销售商品,将5亿用
  户中的更多人转化为网络购物者。
• Facebook正在添加电子商务功能,以吸引用
  户,增加用户在线时长,并创造更高的广
  告销售额。
• 好多所谓的编译器
• 单纯的前端技术在减少
• 具有实际应用价值的更多
从构造函数到YUI-Sandbox模块
    展炎 zhanyan@taobao.com
          2010-11-28
开头的话

                 什么样的分享才有价值?
   •大家完全不知道的?
   •大家了解但不详细的?
   •有实际使用价值的?
   •…..


http://www.infoq.com/cn/articles/sandboxOnB 钨龙
http://www.slideshare.net/giordano/javascript-patterns-5725919   麦惠99
两个重要的概念(一)
1.所有函数声明在解析后,都自动拥有一个
  prototype成员。该prototype成员拥有一个自动添
  加的constructor成员,指向函数本身:

          Fn === Fn.prototype.constructor;




“反面”实例:
var Fn = function(){…};
Fn. prototype = {…};
两个重要的概念(二)
2.所有对象o都拥有一个隐藏的原型对象(在 FF中
  是o.__proto__)。var fn = new Fn(),在FF下,
  不考虑参数传递,可以用下面的代码来表示 new
  的过程:
  var o = {__proto__: Fn.prototype};
  Fn.apply(o);
  fn = o;

   o.constructor === o.__proto__.constructor;

“反面”实例:
var SubClass.prototype = new BaseClass();
传统的构造方式
var Person = function(name){
  this.name = name;
  this.say = function(){
    return ‘I am’ + this.name;
  }
}




var tom = new Person(‘Tom’);//Ok!

var jerry = Person(‘Jerry’);//没有new
1.Jerry is undefined;
2.在window上添加了name和say
改进第一步
var Person = function(name){
  var that = {};
  that.name = name;
  that.say = function(){
    return ‘I am’ + this.name;
  }
  //构造函数默认的会返回this,但指定了return值后就返回该值了。
  return that;
}

Person .prototype.run = function(){…};
var tom = Person(‘Tom’);

alert(tom.say);//I am Tom
alert(tom.run);//underfined
再次改进(自身调用构造)
var Person = function(name){
  if(this instanceof Person){
    this.name = name;
    this.say = function(){
      return “I am” + that.name;
    }
  }else{
    return new Person(name);
  }
}



YUI3中YUI实例对象构造的方式
Sandbox以及模块

1.注册与使用:

2.沙箱的使用:

3. 配置与控制:
YUI2如何做
1.注册与使用:                                                  {'calendar': {
YAHOO.util.YUILoader = function(o){                         'type': 'js',
     this.moduleInfo = lang.merge(YUI.info.moduleInfo);     ‘path’:’../calendar-min.js',
    …                                                       'requires': ['event', 'dom']
}                                                           },…
                                                          }
//加载模块
var loader = new YAHOO.util.YUILoader ({
     requires:[‘calendar’]
});
loader .insert();
//自定义模块
var loader = new YAHOO.util.YUILoader ();
loader. addModule(
     name:’yk-dp’, type:'js', requires:[‘event‘,’json’,’dom’] ,
     fullpath:'http://k.kbcdn.com/‘product/dianping/dpList-1-0-0.js”,
);
loader .insert();
YUI2如何做
2.沙箱的使用:
var loader = new YAHOO.util.YUILoader ();
loader.sandbox({
 require:[’ calendar’],
 base:’../’,              由于的使用了XHR,所以有跨
                              域的限制。(非GET)
 onSuccess:function(o){
    var sanboxYui= o.reference;
    console.log(sanboxYui .widget.Calendar);//OK
 },
 …
});
console.log(YAHOO.widget.Calendar);//undefined
//我们的做法。
var YK = {…};//全局的名空间
YUI2如何做
3.配置与控制:
//全局的环境控制,保证不多次load同一个JS
//对sandbox没有控制,也不应该控制
YAHOO.env = {
   modules: [],
  listeners: []
}

//我们这样做的
YAHOO.info.moduleInfo=lang.merge(YAHOO.info.moduleInfo,Y_loadInfo);

                                {ykvalidator : {
                                  type : 'js',
                                  fullpath : ‘.. validator‘ + '_1_0_14'+'.js',
                                  requires :['ykvalidator_css']
                                  },….
                                }
YUI3如何做
1.注册与使用:
YUI.Env[Y.version].modules = {
    “anim”:{…}
    …
}
//注册
YUI.add('k2-popup',function(Y){
    ……
});
YUI3如何做
2.沙箱的使用:
YUI().use(‘k2-popup’,function(Y){
    //Y是YUI的一个独立的实例对象
});

//在实例Y上有Y.Env._loader属性,即为一个Y.Loader的实例
loader = new Y.Loader(Y.config);
//在use方法中完成默认加载
Y.config.core = [‘get’,’rls’,’intl-base’…];


 YUI.Env

     Y.Env                 Y.Env      Y.Env
YUI3如何做
var YUI = function() {
     var i = 0, Y = this, args = arguments, l = args.length,
     // YUI_config,产品级组件的添加时用到
     gconf = (typeof YUI_config !== 'undefined') && YUI_config;
     //运用的就是前面的构造方式
       if (!(Y instanceof YUI)) {
         Y = new YUI();
     } else {
        //调用Y.Env初始化,完成gconf配置的注册,绑定规定的module
        Y.applyConfig(gconf);
        ……..
     }
     for (; i<l; i++) {
         Y.applyConfig(args[i]);
     }
     …….
     return Y;
  };
YUI3如何做
3.配置与控制:
//局部配置
YUI({
     modules : {
           'popup' : {
                     fullpath : '/k2/popup/popup.js',
                     requires : ['dd-constrain','dd-ddm','stylesheet'] }
           }
 });
//对于组件
var YUI_config = {
     core:['get','yui-later','yui-throttle','loader-base','loader-yui3']
     base:'http://k.kbcdn.com/yui/3.2.0/',
      comboBase : 'http://k.kbcdn.com/min/f=',
      K2:{….}
}
YUI3如何做
3.配置与控制:
//对于产品级应用
 YUI_config.groups.appDpList = {
    combine: false,
    base :'http://dev2/product/huangye/dianping/v3/',
    root :'',
    modules:{
      'k2-dpform':{
        path : 'form.js',
        requires :['node-base','node-style','anim-base','anim-easing']
      }
    }
 };
不太恰当的比喻
THANKS
  Q/A

More Related Content

What's hot

[Swift] Memento
[Swift] Memento[Swift] Memento
[Swift] Memento
Bill Kim
 
BVJS
BVJSBVJS
meet.js - QooXDoo
meet.js - QooXDoomeet.js - QooXDoo
meet.js - QooXDoo
Radek Benkel
 
Expressを使ってみた
Expressを使ってみたExpressを使ってみた
Expressを使ってみた
Atsuhiro Takiguchi
 
Bacbkone js
Bacbkone jsBacbkone js
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony Apps
Kris Wallsmith
 
SenchaTouch 2 and Sencha.io
SenchaTouch 2 and Sencha.ioSenchaTouch 2 and Sencha.io
SenchaTouch 2 and Sencha.io
Nils Dehl
 
Chrome拡張開発者のためのFirefox拡張開発
Chrome拡張開発者のためのFirefox拡張開発Chrome拡張開発者のためのFirefox拡張開発
Chrome拡張開発者のためのFirefox拡張開発
swdyh
 
How kris-writes-symfony-apps-london
How kris-writes-symfony-apps-londonHow kris-writes-symfony-apps-london
How kris-writes-symfony-apps-london
Kris Wallsmith
 
Desarrollo de módulos en Drupal e integración con dispositivos móviles
Desarrollo de módulos en Drupal e integración con dispositivos móvilesDesarrollo de módulos en Drupal e integración con dispositivos móviles
Desarrollo de módulos en Drupal e integración con dispositivos móviles
Luis Curo Salvatierra
 
Delivering a Responsive UI
Delivering a Responsive UIDelivering a Responsive UI
Delivering a Responsive UI
Rebecca Murphey
 
Ricky Bobby's World
Ricky Bobby's WorldRicky Bobby's World
Ricky Bobby's World
Brian Lonsdorf
 
BEAR DI
BEAR DIBEAR DI
Web Components With Rails
Web Components With RailsWeb Components With Rails
Web Components With Rails
Boris Nadion
 
JavaScript patterns
JavaScript patternsJavaScript patterns
JavaScript patterns
Norihito YAMAKAWA
 
Beyond DOMReady: Ultra High-Performance Javascript
Beyond DOMReady: Ultra High-Performance JavascriptBeyond DOMReady: Ultra High-Performance Javascript
Beyond DOMReady: Ultra High-Performance Javascript
aglemann
 
Doctrineのメモリーリークについて
DoctrineのメモリーリークについてDoctrineのメモリーリークについて
Doctrineのメモリーリークについて
t satoppejp
 
Unittests für Dummies
Unittests für DummiesUnittests für Dummies
Unittests für Dummies
Lars Jankowfsky
 
Fact, Fiction, and FP
Fact, Fiction, and FPFact, Fiction, and FP
Fact, Fiction, and FP
Brian Lonsdorf
 
Writing Your App Swiftly
Writing Your App SwiftlyWriting Your App Swiftly
Writing Your App Swiftly
Sommer Panage
 

What's hot (20)

[Swift] Memento
[Swift] Memento[Swift] Memento
[Swift] Memento
 
BVJS
BVJSBVJS
BVJS
 
meet.js - QooXDoo
meet.js - QooXDoomeet.js - QooXDoo
meet.js - QooXDoo
 
Expressを使ってみた
Expressを使ってみたExpressを使ってみた
Expressを使ってみた
 
Bacbkone js
Bacbkone jsBacbkone js
Bacbkone js
 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony Apps
 
SenchaTouch 2 and Sencha.io
SenchaTouch 2 and Sencha.ioSenchaTouch 2 and Sencha.io
SenchaTouch 2 and Sencha.io
 
Chrome拡張開発者のためのFirefox拡張開発
Chrome拡張開発者のためのFirefox拡張開発Chrome拡張開発者のためのFirefox拡張開発
Chrome拡張開発者のためのFirefox拡張開発
 
How kris-writes-symfony-apps-london
How kris-writes-symfony-apps-londonHow kris-writes-symfony-apps-london
How kris-writes-symfony-apps-london
 
Desarrollo de módulos en Drupal e integración con dispositivos móviles
Desarrollo de módulos en Drupal e integración con dispositivos móvilesDesarrollo de módulos en Drupal e integración con dispositivos móviles
Desarrollo de módulos en Drupal e integración con dispositivos móviles
 
Delivering a Responsive UI
Delivering a Responsive UIDelivering a Responsive UI
Delivering a Responsive UI
 
Ricky Bobby's World
Ricky Bobby's WorldRicky Bobby's World
Ricky Bobby's World
 
BEAR DI
BEAR DIBEAR DI
BEAR DI
 
Web Components With Rails
Web Components With RailsWeb Components With Rails
Web Components With Rails
 
JavaScript patterns
JavaScript patternsJavaScript patterns
JavaScript patterns
 
Beyond DOMReady: Ultra High-Performance Javascript
Beyond DOMReady: Ultra High-Performance JavascriptBeyond DOMReady: Ultra High-Performance Javascript
Beyond DOMReady: Ultra High-Performance Javascript
 
Doctrineのメモリーリークについて
DoctrineのメモリーリークについてDoctrineのメモリーリークについて
Doctrineのメモリーリークについて
 
Unittests für Dummies
Unittests für DummiesUnittests für Dummies
Unittests für Dummies
 
Fact, Fiction, and FP
Fact, Fiction, and FPFact, Fiction, and FP
Fact, Fiction, and FP
 
Writing Your App Swiftly
Writing Your App SwiftlyWriting Your App Swiftly
Writing Your App Swiftly
 

Viewers also liked

夜宴35期《质量?》
夜宴35期《质量?》夜宴35期《质量?》
夜宴35期《质量?》
Koubei Banquet
 
夜宴45期《Sociability is complex》
夜宴45期《Sociability is complex》夜宴45期《Sociability is complex》
夜宴45期《Sociability is complex》
Koubei Banquet
 
夜宴31期《浏览器》
夜宴31期《浏览器》夜宴31期《浏览器》
夜宴31期《浏览器》
Koubei Banquet
 
夜宴37期《专利》
夜宴37期《专利》夜宴37期《专利》
夜宴37期《专利》
Koubei Banquet
 
夜宴32期《WordPress and so on》
夜宴32期《WordPress and so on》夜宴32期《WordPress and so on》
夜宴32期《WordPress and so on》
Koubei Banquet
 
夜宴20期《Google退出“中国”?》
夜宴20期《Google退出“中国”?》夜宴20期《Google退出“中国”?》
夜宴20期《Google退出“中国”?》
Koubei Banquet
 
夜宴51期《Nothing but the web》
夜宴51期《Nothing but the web》夜宴51期《Nothing but the web》
夜宴51期《Nothing but the web》
Koubei Banquet
 
夜宴2期《ActionScript与JavaScript》
夜宴2期《ActionScript与JavaScript》夜宴2期《ActionScript与JavaScript》
夜宴2期《ActionScript与JavaScript》Koubei Banquet
 
夜宴7期《Eclipse》
夜宴7期《Eclipse》夜宴7期《Eclipse》
夜宴7期《Eclipse》Koubei Banquet
 
夜宴12期《面还是被面》
夜宴12期《面还是被面》夜宴12期《面还是被面》
夜宴12期《面还是被面》Koubei Banquet
 
夜宴14期《Google跑了》
夜宴14期《Google跑了》夜宴14期《Google跑了》
夜宴14期《Google跑了》Koubei Banquet
 
夜宴13期《事件驱动》
夜宴13期《事件驱动》夜宴13期《事件驱动》
夜宴13期《事件驱动》Koubei Banquet
 
夜宴48期《一场关于YUI3/jQuery的精彩辩论》
夜宴48期《一场关于YUI3/jQuery的精彩辩论》夜宴48期《一场关于YUI3/jQuery的精彩辩论》
夜宴48期《一场关于YUI3/jQuery的精彩辩论》Koubei Banquet
 
夜宴40期《表单-反馈-体验》
夜宴40期《表单-反馈-体验》夜宴40期《表单-反馈-体验》
夜宴40期《表单-反馈-体验》Koubei Banquet
 
夜宴10期《Web字符那点事》
夜宴10期《Web字符那点事》夜宴10期《Web字符那点事》
夜宴10期《Web字符那点事》Koubei Banquet
 
夜宴19期《没有永远的朋友》
夜宴19期《没有永远的朋友》夜宴19期《没有永远的朋友》
夜宴19期《没有永远的朋友》Koubei Banquet
 
夜宴44期《我们蛋疼的年代——安全篇》
夜宴44期《我们蛋疼的年代——安全篇》夜宴44期《我们蛋疼的年代——安全篇》
夜宴44期《我们蛋疼的年代——安全篇》
Koubei Banquet
 
夜宴41期《新事》
夜宴41期《新事》夜宴41期《新事》
夜宴41期《新事》
Koubei Banquet
 
夜宴28期《Revolution》
夜宴28期《Revolution》夜宴28期《Revolution》
夜宴28期《Revolution》
Koubei Banquet
 
An introduction to islamic finance
An introduction to islamic financeAn introduction to islamic finance
An introduction to islamic finance
Just Helping
 

Viewers also liked (20)

夜宴35期《质量?》
夜宴35期《质量?》夜宴35期《质量?》
夜宴35期《质量?》
 
夜宴45期《Sociability is complex》
夜宴45期《Sociability is complex》夜宴45期《Sociability is complex》
夜宴45期《Sociability is complex》
 
夜宴31期《浏览器》
夜宴31期《浏览器》夜宴31期《浏览器》
夜宴31期《浏览器》
 
夜宴37期《专利》
夜宴37期《专利》夜宴37期《专利》
夜宴37期《专利》
 
夜宴32期《WordPress and so on》
夜宴32期《WordPress and so on》夜宴32期《WordPress and so on》
夜宴32期《WordPress and so on》
 
夜宴20期《Google退出“中国”?》
夜宴20期《Google退出“中国”?》夜宴20期《Google退出“中国”?》
夜宴20期《Google退出“中国”?》
 
夜宴51期《Nothing but the web》
夜宴51期《Nothing but the web》夜宴51期《Nothing but the web》
夜宴51期《Nothing but the web》
 
夜宴2期《ActionScript与JavaScript》
夜宴2期《ActionScript与JavaScript》夜宴2期《ActionScript与JavaScript》
夜宴2期《ActionScript与JavaScript》
 
夜宴7期《Eclipse》
夜宴7期《Eclipse》夜宴7期《Eclipse》
夜宴7期《Eclipse》
 
夜宴12期《面还是被面》
夜宴12期《面还是被面》夜宴12期《面还是被面》
夜宴12期《面还是被面》
 
夜宴14期《Google跑了》
夜宴14期《Google跑了》夜宴14期《Google跑了》
夜宴14期《Google跑了》
 
夜宴13期《事件驱动》
夜宴13期《事件驱动》夜宴13期《事件驱动》
夜宴13期《事件驱动》
 
夜宴48期《一场关于YUI3/jQuery的精彩辩论》
夜宴48期《一场关于YUI3/jQuery的精彩辩论》夜宴48期《一场关于YUI3/jQuery的精彩辩论》
夜宴48期《一场关于YUI3/jQuery的精彩辩论》
 
夜宴40期《表单-反馈-体验》
夜宴40期《表单-反馈-体验》夜宴40期《表单-反馈-体验》
夜宴40期《表单-反馈-体验》
 
夜宴10期《Web字符那点事》
夜宴10期《Web字符那点事》夜宴10期《Web字符那点事》
夜宴10期《Web字符那点事》
 
夜宴19期《没有永远的朋友》
夜宴19期《没有永远的朋友》夜宴19期《没有永远的朋友》
夜宴19期《没有永远的朋友》
 
夜宴44期《我们蛋疼的年代——安全篇》
夜宴44期《我们蛋疼的年代——安全篇》夜宴44期《我们蛋疼的年代——安全篇》
夜宴44期《我们蛋疼的年代——安全篇》
 
夜宴41期《新事》
夜宴41期《新事》夜宴41期《新事》
夜宴41期《新事》
 
夜宴28期《Revolution》
夜宴28期《Revolution》夜宴28期《Revolution》
夜宴28期《Revolution》
 
An introduction to islamic finance
An introduction to islamic financeAn introduction to islamic finance
An introduction to islamic finance
 

Similar to 夜宴52期《从函数构造到YUI沙箱》

Yui3在美团 2
Yui3在美团 2Yui3在美团 2
Yui3在美团 2
Kai Cui
 
YUI for your Hacks
YUI for your Hacks YUI for your Hacks
YUI for your Hacks
Subramanyan Murali
 
YUI (Advanced)
YUI (Advanced)YUI (Advanced)
YUI (Advanced)
Jai Santhosh
 
Get started with YUI
Get started with YUIGet started with YUI
Get started with YUI
Adam Lu
 
Embracing YUI3 and Frontend Perf
Embracing YUI3 and Frontend PerfEmbracing YUI3 and Frontend Perf
Embracing YUI3 and Frontend Perf
Morgan Cheng
 
Loadrunner
LoadrunnerLoadrunner
Loadrunner
danwrong
 
Running YUI 3 on Node.js - JSConf 2010
Running YUI 3 on Node.js - JSConf 2010Running YUI 3 on Node.js - JSConf 2010
Running YUI 3 on Node.js - JSConf 2010
Adam Moore
 
JavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stackJavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stack
Tom Croucher
 
YUI 3
YUI 3YUI 3
YUI 3
Dav Glass
 
2009 Hackday Taiwan Yui
2009 Hackday Taiwan Yui2009 Hackday Taiwan Yui
2009 Hackday Taiwan Yui
JH Lee
 
Building Large jQuery Applications
Building Large jQuery ApplicationsBuilding Large jQuery Applications
Building Large jQuery Applications
Rebecca Murphey
 
Yui3在美团
Yui3在美团Yui3在美团
Yui3在美团
springuper
 
Say It With Javascript
Say It With JavascriptSay It With Javascript
Say It With Javascript
Giovanni Scerra ☃
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yet
Tom Croucher
 
Security testing of YUI powered applications
Security testing of YUI powered applicationsSecurity testing of YUI powered applications
Security testing of YUI powered applications
dimisec
 
Yui intro
Yui introYui intro
Yui intro
Aditya Gaur
 
Web Apps building with Webpack
Web Apps building with WebpackWeb Apps building with Webpack
Web Apps building with Webpack
Ignacio Velazquez
 
Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScript
Donald Sipe
 
Javascript essential-pattern
Javascript essential-patternJavascript essential-pattern
Javascript essential-pattern
偉格 高
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScript
Andrew Dupont
 

Similar to 夜宴52期《从函数构造到YUI沙箱》 (20)

Yui3在美团 2
Yui3在美团 2Yui3在美团 2
Yui3在美团 2
 
YUI for your Hacks
YUI for your Hacks YUI for your Hacks
YUI for your Hacks
 
YUI (Advanced)
YUI (Advanced)YUI (Advanced)
YUI (Advanced)
 
Get started with YUI
Get started with YUIGet started with YUI
Get started with YUI
 
Embracing YUI3 and Frontend Perf
Embracing YUI3 and Frontend PerfEmbracing YUI3 and Frontend Perf
Embracing YUI3 and Frontend Perf
 
Loadrunner
LoadrunnerLoadrunner
Loadrunner
 
Running YUI 3 on Node.js - JSConf 2010
Running YUI 3 on Node.js - JSConf 2010Running YUI 3 on Node.js - JSConf 2010
Running YUI 3 on Node.js - JSConf 2010
 
JavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stackJavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stack
 
YUI 3
YUI 3YUI 3
YUI 3
 
2009 Hackday Taiwan Yui
2009 Hackday Taiwan Yui2009 Hackday Taiwan Yui
2009 Hackday Taiwan Yui
 
Building Large jQuery Applications
Building Large jQuery ApplicationsBuilding Large jQuery Applications
Building Large jQuery Applications
 
Yui3在美团
Yui3在美团Yui3在美团
Yui3在美团
 
Say It With Javascript
Say It With JavascriptSay It With Javascript
Say It With Javascript
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yet
 
Security testing of YUI powered applications
Security testing of YUI powered applicationsSecurity testing of YUI powered applications
Security testing of YUI powered applications
 
Yui intro
Yui introYui intro
Yui intro
 
Web Apps building with Webpack
Web Apps building with WebpackWeb Apps building with Webpack
Web Apps building with Webpack
 
Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScript
 
Javascript essential-pattern
Javascript essential-patternJavascript essential-pattern
Javascript essential-pattern
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScript
 

More from Koubei Banquet

夜宴54期《我的关注》
夜宴54期《我的关注》夜宴54期《我的关注》
夜宴54期《我的关注》Koubei Banquet
 
夜宴53期《Tail of 2010 》
夜宴53期《Tail of 2010 》夜宴53期《Tail of 2010 》
夜宴53期《Tail of 2010 》
Koubei Banquet
 
夜宴50期《YUI3 editor》
夜宴50期《YUI3 editor》夜宴50期《YUI3 editor》
夜宴50期《YUI3 editor》
Koubei Banquet
 
夜宴49期《YUI Conf 2010》
夜宴49期《YUI Conf 2010》夜宴49期《YUI Conf 2010》
夜宴49期《YUI Conf 2010》
Koubei Banquet
 
夜宴47期《一个艰难的决定》
夜宴47期《一个艰难的决定》夜宴47期《一个艰难的决定》
夜宴47期《一个艰难的决定》
Koubei Banquet
 
夜宴43期《Auto Tools》
夜宴43期《Auto Tools》夜宴43期《Auto Tools》
夜宴43期《Auto Tools》
Koubei Banquet
 
夜宴42期《Gadgets》
夜宴42期《Gadgets》夜宴42期《Gadgets》
夜宴42期《Gadgets》
Koubei Banquet
 
夜宴39期《Seven》
夜宴39期《Seven》夜宴39期《Seven》
夜宴39期《Seven》
Koubei Banquet
 
夜宴38期《侵权 & 山寨》
夜宴38期《侵权 & 山寨》夜宴38期《侵权 & 山寨》
夜宴38期《侵权 & 山寨》Koubei Banquet
 
夜宴33期《未来是湿的》
夜宴33期《未来是湿的》夜宴33期《未来是湿的》
夜宴33期《未来是湿的》
Koubei Banquet
 
夜宴30期《HTML5 is coming》
夜宴30期《HTML5 is coming》夜宴30期《HTML5 is coming》
夜宴30期《HTML5 is coming》
Koubei Banquet
 
夜宴29期《难兄难弟》
夜宴29期《难兄难弟》夜宴29期《难兄难弟》
夜宴29期《难兄难弟》Koubei Banquet
 
Banquet 27
Banquet 27Banquet 27
Banquet 27
Koubei Banquet
 
夜宴26期《Mobile Web测试》
夜宴26期《Mobile Web测试》夜宴26期《Mobile Web测试》
夜宴26期《Mobile Web测试》
Koubei Banquet
 
夜宴25期《Web的未来》
夜宴25期《Web的未来》夜宴25期《Web的未来》
夜宴25期《Web的未来》
Koubei Banquet
 
夜宴24期《这段时间》
夜宴24期《这段时间》夜宴24期《这段时间》
夜宴24期《这段时间》
Koubei Banquet
 
夜宴21期《Adobe CS5 & Color》
夜宴21期《Adobe CS5 & Color》夜宴21期《Adobe CS5 & Color》
夜宴21期《Adobe CS5 & Color》Koubei Banquet
 

More from Koubei Banquet (17)

夜宴54期《我的关注》
夜宴54期《我的关注》夜宴54期《我的关注》
夜宴54期《我的关注》
 
夜宴53期《Tail of 2010 》
夜宴53期《Tail of 2010 》夜宴53期《Tail of 2010 》
夜宴53期《Tail of 2010 》
 
夜宴50期《YUI3 editor》
夜宴50期《YUI3 editor》夜宴50期《YUI3 editor》
夜宴50期《YUI3 editor》
 
夜宴49期《YUI Conf 2010》
夜宴49期《YUI Conf 2010》夜宴49期《YUI Conf 2010》
夜宴49期《YUI Conf 2010》
 
夜宴47期《一个艰难的决定》
夜宴47期《一个艰难的决定》夜宴47期《一个艰难的决定》
夜宴47期《一个艰难的决定》
 
夜宴43期《Auto Tools》
夜宴43期《Auto Tools》夜宴43期《Auto Tools》
夜宴43期《Auto Tools》
 
夜宴42期《Gadgets》
夜宴42期《Gadgets》夜宴42期《Gadgets》
夜宴42期《Gadgets》
 
夜宴39期《Seven》
夜宴39期《Seven》夜宴39期《Seven》
夜宴39期《Seven》
 
夜宴38期《侵权 & 山寨》
夜宴38期《侵权 & 山寨》夜宴38期《侵权 & 山寨》
夜宴38期《侵权 & 山寨》
 
夜宴33期《未来是湿的》
夜宴33期《未来是湿的》夜宴33期《未来是湿的》
夜宴33期《未来是湿的》
 
夜宴30期《HTML5 is coming》
夜宴30期《HTML5 is coming》夜宴30期《HTML5 is coming》
夜宴30期《HTML5 is coming》
 
夜宴29期《难兄难弟》
夜宴29期《难兄难弟》夜宴29期《难兄难弟》
夜宴29期《难兄难弟》
 
Banquet 27
Banquet 27Banquet 27
Banquet 27
 
夜宴26期《Mobile Web测试》
夜宴26期《Mobile Web测试》夜宴26期《Mobile Web测试》
夜宴26期《Mobile Web测试》
 
夜宴25期《Web的未来》
夜宴25期《Web的未来》夜宴25期《Web的未来》
夜宴25期《Web的未来》
 
夜宴24期《这段时间》
夜宴24期《这段时间》夜宴24期《这段时间》
夜宴24期《这段时间》
 
夜宴21期《Adobe CS5 & Color》
夜宴21期《Adobe CS5 & Color》夜宴21期《Adobe CS5 & Color》
夜宴21期《Adobe CS5 & Color》
 

夜宴52期《从函数构造到YUI沙箱》