SlideShare a Scribd company logo
1 of 17
Download to read offline
一个艰难的决定
    云渺
 2010.11.08
9月27日
   360推出个人隐私保护器,专门曝光“窥私”软件, 直指QQ。
9月28日
   腾讯称360浏览器涉嫌借色情网站推广
10月14日
   腾讯正式起诉360不正当竞争
10月28日
   360弹窗指责马化腾享受经适房补贴
10月29日
   360推扣扣保镖 称让QQ安全快速更好用
 11月3日
   腾讯决定在装有360软件的电脑上将不能使用QQ。对此360推出360 Web QQ
客户端,但旋即被腾讯以关闭Web QQ服务的方式回击。
11月4日
   360要求腾讯向6亿QQ注册用户道歉
11月5日
   金山、傲游、可牛、百度、搜狗五厂商今日在北京召开联合发布会,宣布将
不兼容360系列软件。
?
世界 浏览器 使用统计
中国 浏览器 使用统计
中国 手机浏览器 使用统计
世界 搜索引擎 使用统计
http://gs.statcounter.com/
单例是一个只能被实例化一次并且可以通过一
           ?
个众所周知的访问点访问的类。

public class Singleton {
  private static Singleton uniqueInstance = null; //标识
  private Singleton(){ } //构造函数
  public static Singleton getInstance() {
        if (uniqueInstance == null){
                 uniqueInstance = new Singleton ();
        }
        return uniqueInstance;
  }
}

Singleton. getInstance(); //获取单例
?
JavaScript单例是一个用来划分命名空间并将一批
  相关方法和属性组织在一起的对象

// 最简单的单例
var Singleton = {
   attribute1: true,
   attribute2: 12,
   method1: function(){
        …
   },
   method1: function(){
        …
   }
}
划分命名空间:                      ?
Ext = { }; //全局

//防止全局变量污染、使代码组织有序合理
Ext.util = { };
Ext.lib = { };

Ext.util.JSON = { };
Ext.util.Observable = { };
Ext.util.TaskRunner = { };
网页专用代码的包装器
                               ?
Namespace.pageName = {
  // page contants.
  CONSTANT_1: true,
  CONSTANT_2: true,

    // page methods.
    method1: function(){ … },
    method2: function(){ … },

    // Initializtion method.
    init: function(){ … }
}

addLoadEvent(Namespace.pageName.init);
拥有私有成员的单例(下划线表示法)
                                   ?
GiantCorp.DataParser = {

    // Private methods.
    _stripWhitespace: function (str){
          return str.replace(/s+/, ‘’);
    },
    _stringSplit: function (str, delimiter){
          return str.split(delimiter);
    }

    // Public method.
    stringToArray: function(str, delimiter, stripWS){
         …
    }
}
拥有私有成员的单例(使用闭包)
                          ?
MyNameSpace.Singleton = (function(){
   // Private members.
   var privateAttribute1 = false;
   function privateMethod1(){
        …
   }
   return {
        // Public members.
        publicAttribute1: 10,
        publicMethod1: function(){
                …
        }
   }
})();
惰性实例化

MyNameSpace.Singleton = (function(){         return {
                                                   getInstance: function(){
   var uniqueInstance;                                if(!uniqueInstance){
                                                           uniqueInstance = constructor();
   function constructor(){                            }
         // Private members.                          return uniqueInstance;
         var privateAttribute1 = false;            }
         function privateMethod1(){          }
                   …
         }                                })();
         return {
                   // Public members.
                   atttibute1: 10,
                   method1: function(){
                             …
                   }
         }
   }                                      MyNameSpace.Singleton.getInstance().method1();
Thanks!

More Related Content

Viewers also liked

夜宴36期《技术前哨站》
夜宴36期《技术前哨站》夜宴36期《技术前哨站》
夜宴36期《技术前哨站》Koubei Banquet
 
夜宴42期《Gadgets》
夜宴42期《Gadgets》夜宴42期《Gadgets》
夜宴42期《Gadgets》Koubei Banquet
 
夜宴53期《Tail of 2010 》
夜宴53期《Tail of 2010 》夜宴53期《Tail of 2010 》
夜宴53期《Tail of 2010 》Koubei Banquet
 
夜宴26期《Mobile Web测试》
夜宴26期《Mobile Web测试》夜宴26期《Mobile Web测试》
夜宴26期《Mobile Web测试》Koubei Banquet
 
夜宴8期《Dive into Mozilla Labs》
夜宴8期《Dive into Mozilla Labs》夜宴8期《Dive into Mozilla Labs》
夜宴8期《Dive into Mozilla Labs》Koubei Banquet
 
夜宴18期《旧的不去新的不来》
夜宴18期《旧的不去新的不来》夜宴18期《旧的不去新的不来》
夜宴18期《旧的不去新的不来》Koubei Banquet
 
夜宴33期《未来是湿的》
夜宴33期《未来是湿的》夜宴33期《未来是湿的》
夜宴33期《未来是湿的》Koubei Banquet
 
夜宴37期《专利》
夜宴37期《专利》夜宴37期《专利》
夜宴37期《专利》Koubei Banquet
 
夜宴20期《Google退出“中国”?》
夜宴20期《Google退出“中国”?》夜宴20期《Google退出“中国”?》
夜宴20期《Google退出“中国”?》Koubei Banquet
 
夜宴17期《体验》
夜宴17期《体验》夜宴17期《体验》
夜宴17期《体验》Koubei Banquet
 
夜宴35期《质量?》
夜宴35期《质量?》夜宴35期《质量?》
夜宴35期《质量?》Koubei Banquet
 
夜宴24期《这段时间》
夜宴24期《这段时间》夜宴24期《这段时间》
夜宴24期《这段时间》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
 
夜宴6期《Past, Present, and Future》
夜宴6期《Past, Present, and Future》夜宴6期《Past, Present, and Future》
夜宴6期《Past, Present, and Future》Koubei Banquet
 
夜宴28期《Revolution》
夜宴28期《Revolution》夜宴28期《Revolution》
夜宴28期《Revolution》Koubei Banquet
 
夜宴23期《iPhone 3GS》
夜宴23期《iPhone 3GS》夜宴23期《iPhone 3GS》
夜宴23期《iPhone 3GS》Koubei Banquet
 

Viewers also liked (20)

夜宴36期《技术前哨站》
夜宴36期《技术前哨站》夜宴36期《技术前哨站》
夜宴36期《技术前哨站》
 
夜宴42期《Gadgets》
夜宴42期《Gadgets》夜宴42期《Gadgets》
夜宴42期《Gadgets》
 
夜宴53期《Tail of 2010 》
夜宴53期《Tail of 2010 》夜宴53期《Tail of 2010 》
夜宴53期《Tail of 2010 》
 
夜宴26期《Mobile Web测试》
夜宴26期《Mobile Web测试》夜宴26期《Mobile Web测试》
夜宴26期《Mobile Web测试》
 
夜宴8期《Dive into Mozilla Labs》
夜宴8期《Dive into Mozilla Labs》夜宴8期《Dive into Mozilla Labs》
夜宴8期《Dive into Mozilla Labs》
 
夜宴18期《旧的不去新的不来》
夜宴18期《旧的不去新的不来》夜宴18期《旧的不去新的不来》
夜宴18期《旧的不去新的不来》
 
夜宴33期《未来是湿的》
夜宴33期《未来是湿的》夜宴33期《未来是湿的》
夜宴33期《未来是湿的》
 
夜宴37期《专利》
夜宴37期《专利》夜宴37期《专利》
夜宴37期《专利》
 
夜宴20期《Google退出“中国”?》
夜宴20期《Google退出“中国”?》夜宴20期《Google退出“中国”?》
夜宴20期《Google退出“中国”?》
 
夜宴17期《体验》
夜宴17期《体验》夜宴17期《体验》
夜宴17期《体验》
 
夜宴35期《质量?》
夜宴35期《质量?》夜宴35期《质量?》
夜宴35期《质量?》
 
夜宴24期《这段时间》
夜宴24期《这段时间》夜宴24期《这段时间》
夜宴24期《这段时间》
 
夜宴45期《Sociability is complex》
夜宴45期《Sociability is complex》夜宴45期《Sociability is complex》
夜宴45期《Sociability is complex》
 
夜宴31期《浏览器》
夜宴31期《浏览器》夜宴31期《浏览器》
夜宴31期《浏览器》
 
夜宴6期《Past, Present, and Future》
夜宴6期《Past, Present, and Future》夜宴6期《Past, Present, and Future》
夜宴6期《Past, Present, and Future》
 
夜宴28期《Revolution》
夜宴28期《Revolution》夜宴28期《Revolution》
夜宴28期《Revolution》
 
Ihya v4
Ihya v4Ihya v4
Ihya v4
 
夜宴23期《iPhone 3GS》
夜宴23期《iPhone 3GS》夜宴23期《iPhone 3GS》
夜宴23期《iPhone 3GS》
 
Virtues of Koran
Virtues of KoranVirtues of Koran
Virtues of Koran
 
Ihya v3
Ihya v3Ihya v3
Ihya v3
 

Similar to 夜宴47期《一个艰难的决定》

C++ Windows Forms L06 - Utlitity and Strings
C++ Windows Forms L06 - Utlitity and StringsC++ Windows Forms L06 - Utlitity and Strings
C++ Windows Forms L06 - Utlitity and StringsMohammad Shaker
 
Java Programming Must implement a storage manager that main.pdf
Java Programming Must implement a storage manager that main.pdfJava Programming Must implement a storage manager that main.pdf
Java Programming Must implement a storage manager that main.pdfadinathassociates
 
Classes and objects1
Classes and objects1Classes and objects1
Classes and objects1Vineeta Garg
 
Organizing Code with JavascriptMVC
Organizing Code with JavascriptMVCOrganizing Code with JavascriptMVC
Organizing Code with JavascriptMVCThomas Reynolds
 
Engineering JavaScript
Engineering JavaScriptEngineering JavaScript
Engineering JavaScriptJim Purbrick
 
Testing Android apps based on Dagger and RxJava Droidcon UK
Testing Android apps based on Dagger and RxJava Droidcon UKTesting Android apps based on Dagger and RxJava Droidcon UK
Testing Android apps based on Dagger and RxJava Droidcon UKFabio Collini
 
Testable JavaScript: Application Architecture
Testable JavaScript:  Application ArchitectureTestable JavaScript:  Application Architecture
Testable JavaScript: Application ArchitectureMark Trostler
 
Singleton Pattern
Singleton PatternSingleton Pattern
Singleton PatternBorey Lim
 
Don't Make Android Bad... Again
Don't Make Android Bad... AgainDon't Make Android Bad... Again
Don't Make Android Bad... AgainPedro Vicente
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced JavascriptAdieu
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascriptrelay12
 
Semantic code transformations in MetaJS
Semantic code transformations in MetaJSSemantic code transformations in MetaJS
Semantic code transformations in MetaJSDmytro Dogadailo
 
Java final project of scientific calcultor
Java final project of scientific calcultorJava final project of scientific calcultor
Java final project of scientific calcultorMd. Eunus Ali Rupom
 
Backbone页面路由技术分析与实例
Backbone页面路由技术分析与实例Backbone页面路由技术分析与实例
Backbone页面路由技术分析与实例yidiyu
 
AST Transformations at JFokus
AST Transformations at JFokusAST Transformations at JFokus
AST Transformations at JFokusHamletDRC
 

Similar to 夜宴47期《一个艰难的决定》 (20)

C++ Windows Forms L06 - Utlitity and Strings
C++ Windows Forms L06 - Utlitity and StringsC++ Windows Forms L06 - Utlitity and Strings
C++ Windows Forms L06 - Utlitity and Strings
 
Java Programming Must implement a storage manager that main.pdf
Java Programming Must implement a storage manager that main.pdfJava Programming Must implement a storage manager that main.pdf
Java Programming Must implement a storage manager that main.pdf
 
Classes and objects1
Classes and objects1Classes and objects1
Classes and objects1
 
Build your own entity with Drupal
Build your own entity with DrupalBuild your own entity with Drupal
Build your own entity with Drupal
 
Organizing Code with JavascriptMVC
Organizing Code with JavascriptMVCOrganizing Code with JavascriptMVC
Organizing Code with JavascriptMVC
 
Engineering JavaScript
Engineering JavaScriptEngineering JavaScript
Engineering JavaScript
 
Testing Android apps based on Dagger and RxJava Droidcon UK
Testing Android apps based on Dagger and RxJava Droidcon UKTesting Android apps based on Dagger and RxJava Droidcon UK
Testing Android apps based on Dagger and RxJava Droidcon UK
 
Testable JavaScript: Application Architecture
Testable JavaScript:  Application ArchitectureTestable JavaScript:  Application Architecture
Testable JavaScript: Application Architecture
 
Singleton Pattern
Singleton PatternSingleton Pattern
Singleton Pattern
 
Wien15 java8
Wien15 java8Wien15 java8
Wien15 java8
 
Don't Make Android Bad... Again
Don't Make Android Bad... AgainDon't Make Android Bad... Again
Don't Make Android Bad... Again
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
 
Java
JavaJava
Java
 
Semantic code transformations in MetaJS
Semantic code transformations in MetaJSSemantic code transformations in MetaJS
Semantic code transformations in MetaJS
 
Java final project of scientific calcultor
Java final project of scientific calcultorJava final project of scientific calcultor
Java final project of scientific calcultor
 
Backbone页面路由技术分析与实例
Backbone页面路由技术分析与实例Backbone页面路由技术分析与实例
Backbone页面路由技术分析与实例
 
AST Transformations at JFokus
AST Transformations at JFokusAST Transformations at JFokus
AST Transformations at JFokus
 
Ajaxworld
AjaxworldAjaxworld
Ajaxworld
 

More from Koubei Banquet

夜宴2期《ActionScript与JavaScript》
夜宴2期《ActionScript与JavaScript》夜宴2期《ActionScript与JavaScript》
夜宴2期《ActionScript与JavaScript》Koubei Banquet
 
夜宴54期《我的关注》
夜宴54期《我的关注》夜宴54期《我的关注》
夜宴54期《我的关注》Koubei Banquet
 
夜宴52期《从函数构造到YUI沙箱》
夜宴52期《从函数构造到YUI沙箱》夜宴52期《从函数构造到YUI沙箱》
夜宴52期《从函数构造到YUI沙箱》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
 
夜宴48期《一场关于YUI3/jQuery的精彩辩论》
夜宴48期《一场关于YUI3/jQuery的精彩辩论》夜宴48期《一场关于YUI3/jQuery的精彩辩论》
夜宴48期《一场关于YUI3/jQuery的精彩辩论》Koubei Banquet
 
夜宴44期《我们蛋疼的年代——安全篇》
夜宴44期《我们蛋疼的年代——安全篇》夜宴44期《我们蛋疼的年代——安全篇》
夜宴44期《我们蛋疼的年代——安全篇》Koubei Banquet
 
夜宴43期《Auto Tools》
夜宴43期《Auto Tools》夜宴43期《Auto Tools》
夜宴43期《Auto Tools》Koubei Banquet
 
夜宴41期《新事》
夜宴41期《新事》夜宴41期《新事》
夜宴41期《新事》Koubei Banquet
 
夜宴40期《表单-反馈-体验》
夜宴40期《表单-反馈-体验》夜宴40期《表单-反馈-体验》
夜宴40期《表单-反馈-体验》Koubei Banquet
 
夜宴39期《Seven》
夜宴39期《Seven》夜宴39期《Seven》
夜宴39期《Seven》Koubei Banquet
 
夜宴38期《侵权 & 山寨》
夜宴38期《侵权 & 山寨》夜宴38期《侵权 & 山寨》
夜宴38期《侵权 & 山寨》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
 
夜宴25期《Web的未来》
夜宴25期《Web的未来》夜宴25期《Web的未来》
夜宴25期《Web的未来》Koubei Banquet
 
夜宴21期《Adobe CS5 & Color》
夜宴21期《Adobe CS5 & Color》夜宴21期《Adobe CS5 & Color》
夜宴21期《Adobe CS5 & Color》Koubei Banquet
 
夜宴19期《没有永远的朋友》
夜宴19期《没有永远的朋友》夜宴19期《没有永远的朋友》
夜宴19期《没有永远的朋友》Koubei Banquet
 

More from Koubei Banquet (18)

夜宴2期《ActionScript与JavaScript》
夜宴2期《ActionScript与JavaScript》夜宴2期《ActionScript与JavaScript》
夜宴2期《ActionScript与JavaScript》
 
夜宴54期《我的关注》
夜宴54期《我的关注》夜宴54期《我的关注》
夜宴54期《我的关注》
 
夜宴52期《从函数构造到YUI沙箱》
夜宴52期《从函数构造到YUI沙箱》夜宴52期《从函数构造到YUI沙箱》
夜宴52期《从函数构造到YUI沙箱》
 
夜宴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》
 
夜宴48期《一场关于YUI3/jQuery的精彩辩论》
夜宴48期《一场关于YUI3/jQuery的精彩辩论》夜宴48期《一场关于YUI3/jQuery的精彩辩论》
夜宴48期《一场关于YUI3/jQuery的精彩辩论》
 
夜宴44期《我们蛋疼的年代——安全篇》
夜宴44期《我们蛋疼的年代——安全篇》夜宴44期《我们蛋疼的年代——安全篇》
夜宴44期《我们蛋疼的年代——安全篇》
 
夜宴43期《Auto Tools》
夜宴43期《Auto Tools》夜宴43期《Auto Tools》
夜宴43期《Auto Tools》
 
夜宴41期《新事》
夜宴41期《新事》夜宴41期《新事》
夜宴41期《新事》
 
夜宴40期《表单-反馈-体验》
夜宴40期《表单-反馈-体验》夜宴40期《表单-反馈-体验》
夜宴40期《表单-反馈-体验》
 
夜宴39期《Seven》
夜宴39期《Seven》夜宴39期《Seven》
夜宴39期《Seven》
 
夜宴38期《侵权 & 山寨》
夜宴38期《侵权 & 山寨》夜宴38期《侵权 & 山寨》
夜宴38期《侵权 & 山寨》
 
夜宴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
 
夜宴25期《Web的未来》
夜宴25期《Web的未来》夜宴25期《Web的未来》
夜宴25期《Web的未来》
 
夜宴21期《Adobe CS5 & Color》
夜宴21期《Adobe CS5 & Color》夜宴21期《Adobe CS5 & Color》
夜宴21期《Adobe CS5 & Color》
 
夜宴19期《没有永远的朋友》
夜宴19期《没有永远的朋友》夜宴19期《没有永远的朋友》
夜宴19期《没有永远的朋友》
 

夜宴47期《一个艰难的决定》

  • 1. 一个艰难的决定 云渺 2010.11.08
  • 2.
  • 3. 9月27日 360推出个人隐私保护器,专门曝光“窥私”软件, 直指QQ。 9月28日 腾讯称360浏览器涉嫌借色情网站推广 10月14日 腾讯正式起诉360不正当竞争 10月28日 360弹窗指责马化腾享受经适房补贴 10月29日 360推扣扣保镖 称让QQ安全快速更好用 11月3日 腾讯决定在装有360软件的电脑上将不能使用QQ。对此360推出360 Web QQ 客户端,但旋即被腾讯以关闭Web QQ服务的方式回击。 11月4日 360要求腾讯向6亿QQ注册用户道歉 11月5日 金山、傲游、可牛、百度、搜狗五厂商今日在北京召开联合发布会,宣布将 不兼容360系列软件。
  • 4.
  • 10. 单例是一个只能被实例化一次并且可以通过一 ? 个众所周知的访问点访问的类。 public class Singleton { private static Singleton uniqueInstance = null; //标识 private Singleton(){ } //构造函数 public static Singleton getInstance() { if (uniqueInstance == null){ uniqueInstance = new Singleton (); } return uniqueInstance; } } Singleton. getInstance(); //获取单例
  • 11. ? JavaScript单例是一个用来划分命名空间并将一批 相关方法和属性组织在一起的对象 // 最简单的单例 var Singleton = { attribute1: true, attribute2: 12, method1: function(){ … }, method1: function(){ … } }
  • 12. 划分命名空间: ? Ext = { }; //全局 //防止全局变量污染、使代码组织有序合理 Ext.util = { }; Ext.lib = { }; Ext.util.JSON = { }; Ext.util.Observable = { }; Ext.util.TaskRunner = { };
  • 13. 网页专用代码的包装器 ? Namespace.pageName = { // page contants. CONSTANT_1: true, CONSTANT_2: true, // page methods. method1: function(){ … }, method2: function(){ … }, // Initializtion method. init: function(){ … } } addLoadEvent(Namespace.pageName.init);
  • 14. 拥有私有成员的单例(下划线表示法) ? GiantCorp.DataParser = { // Private methods. _stripWhitespace: function (str){ return str.replace(/s+/, ‘’); }, _stringSplit: function (str, delimiter){ return str.split(delimiter); } // Public method. stringToArray: function(str, delimiter, stripWS){ … } }
  • 15. 拥有私有成员的单例(使用闭包) ? MyNameSpace.Singleton = (function(){ // Private members. var privateAttribute1 = false; function privateMethod1(){ … } return { // Public members. publicAttribute1: 10, publicMethod1: function(){ … } } })();
  • 16. 惰性实例化 MyNameSpace.Singleton = (function(){ return { getInstance: function(){ var uniqueInstance; if(!uniqueInstance){ uniqueInstance = constructor(); function constructor(){ } // Private members. return uniqueInstance; var privateAttribute1 = false; } function privateMethod1(){ } … } })(); return { // Public members. atttibute1: 10, method1: function(){ … } } } MyNameSpace.Singleton.getInstance().method1();