<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    J2EE社區(qū)

    茍有恒,何必三更起五更眠;
    最無益,只怕一日曝十日寒.
    posts - 241, comments - 318, trackbacks - 0, articles - 16

    Javascript設計模式學習系列 一

    Posted on 2009-05-16 22:27 xcp 閱讀(270) 評論(1)  編輯  收藏 所屬分類: Javascript
    首先介紹一個網站,我很多書本都是在上面下載的,很好。http://www.freebookspot.in/
    我現在學習的書本是:Pro Javascript Design Pattern

    首先簡單地為優(yōu)雅的Javascript代碼開個頭
    1.隨意的Javascript,有表現力的Javascript
    常用Javascript代碼:
     1var isIE = (document.all) ? true : false;
     2
     3var $ = function (id) {
     4    return "string" == typeof id ? document.getElementById(id) : id;
     5}
    ;
     6
     7var Class = {
     8  create: function() {
     9    return function() {
    10      this.initialize.apply(this, arguments);
    11    }

    12  }

    13}

    14
    15var Extend = function(destination, source) {
    16    for (var property in source) {
    17        destination[property] = source[property];
    18    }

    19}

    20
    21var Bind = function(object, fun) {
    22    return function() {
    23        return fun.apply(object, arguments);
    24    }

    25}

    26
    27var Each = function(list, fun){
    28    for (var i = 0, len = list.length; i < len; i++{ fun(list[i], i); }
    29}
    ;

    我喜歡的定義類的方法:
    var MyClass = Class.create();

    MyClass.prototype 
    =
    {
        
    //construction function
        initialize : function(para1, para2)
        
    {
            
    this.property1 = para1;
            
    this.property2 = para2;
            
        }
    ,
        
    //public  function
        fun1 : function()
        
    {
        }
    ,
        
        
    //private function
        fun2 : function()
        
    {
        }

    }
    ;

    //call 和 apply的意義與用法

    //<input type="text" id="myText"   value="input text">
    function Obj(){this.value="對象!";}
    var value="global 變量";
    function Fun1(){alert(this.value);}

    window.Fun1();                                   
    //global 變量
    Fun1.call(window);                              //global 變量
    Fun1.call(document.getElementById('myText'));      //input text
    Fun1.call(new Obj());                           //對象!

    //call函數和apply方法的第一個參數都是要傳入給當前對象的對象,及函數內部的this。后面的參數都是傳遞給當前對象的參數。
    var func=new function(){this.a="func"}
     
    var myfunc=function(x){
         
    var a="myfunc";
         alert(
    this.a);
         alert(x);
     }

     myfunc.call(func,
    "var");
     
    /*可見分別彈出了func和var。到這里就對call的每個參數的意義有所了解了。

    對于apply和call兩者在作用上是相同的,但兩者在參數上有區(qū)別的。
    對于第一個參數意義都一樣,但對第二個參數:
    apply傳入的是一個參數數組,也就是將多個參數組合成為一個數組傳入,而call則作為call的參數傳入(從第二個參數開始)。
    如 func.call(func1,var1,var2,var3)對應的apply寫法為:func.apply(func1,[var1,var2,var3])

    同時使用apply的好處是可以直接將當前函數的arguments對象作為apply的第二個參數傳入
    */


            隨意、寬松的表現1:Javascript的弱類型:null, undefined, boolean, number, String, Object, 特別的對象Array
            隨意、寬松的表現2:匿名函數
    //匿名函數的調用方法
    (function(para1,para2)
    {
        
    return para1 + para2;
    }
    )(1,3);

            Javascript對象類型的不定性、可變性,即建造的類可以動態(tài)改變,即使已經聲明的對象也能隨改變的類而改變,如下:
    /* Class Person. */
    function Person(name, age) {
    this.name = name;
    this.age = age;
    }

    Person.prototype 
    = {
    getName: 
    function() {
    return this.name;
    }
    ,
    getAge: 
    function() {
    return this.age;
    }

    }

    /* Instantiate the class. */
    var alice = new Person('Alice', 93);
    var bill = new Person('Bill', 30);

    /* Modify the class. */
    Person.prototype.getGreeting 
    = function() {
    return 'Hi ' + this.getName() + '!';
    }
    ;

    /* Modify a specific instance. */
    alice.displayGreeting 
    = function() {
    alert(
    this.getGreeting());
    }
    與類的不定性相關的是,Javascript語言的另一特點,反射機制,即可以在運行時檢測類所具有的屬性和方法。

    運用設計模式的三大原因:
    可維護性
    溝通交流性
    性能追求
    不使用設計模式的兩大原因:
    復雜性
    性能追求



    名稱: ?4C.ESL | .↗Evon
    口號: 遇到新問題?先要尋找一個方案乄而不是創(chuàng)造一個方案こ
    mail: 聯系我


    Feedback

    # re: Javascript設計模式學習系列 一  回復  更多評論   

    2009-05-30 18:11 by famingyuan
    哥們兒,只能說你是個強人!佩服!
    主站蜘蛛池模板: 蜜桃视频在线观看免费视频网站WWW| 亚洲国产精品无码专区在线观看| 2022年亚洲午夜一区二区福利| 亚洲精品黄色视频在线观看免费资源 | 亚洲三级高清免费| 久久精品7亚洲午夜a| 99久久国产精品免费一区二区 | 免费国产污网站在线观看15| 亚洲s色大片在线观看| 久久国产乱子伦精品免费不卡| 亚洲AV无码久久精品色欲| 久9久9精品免费观看| 亚洲欧洲自拍拍偷综合| 在线v片免费观看视频| 亚洲日韩精品无码专区加勒比☆ | 精品一卡2卡三卡4卡免费视频| 在线观着免费观看国产黄| 亚洲一区精品视频在线| 无人在线观看免费高清视频| 亚洲av产在线精品亚洲第一站| 成年女人免费v片| 免费欧洲美女牲交视频| 美女视频黄频a免费| 亚洲熟妇av一区二区三区漫画| 免费久久人人爽人人爽av| 亚洲最新在线视频| 日韩在线视频播放免费视频完整版| 亚洲成a人无码av波多野按摩| 男人的天堂av亚洲一区2区| 国产传媒在线观看视频免费观看| 特级毛片aaaa免费观看| 久久香蕉国产线看观看亚洲片 | 在线观看人成网站深夜免费| 日韩在线一区二区三区免费视频| 亚洲人成网站在线观看播放| 成人免费激情视频| 亚洲视频在线一区二区三区| 啦啦啦在线免费视频| 成人性生交大片免费看好| 国产亚洲精品成人AA片| 亚洲天堂中文字幕在线|