成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

《JavaScript語言精粹》 代碼摘錄

haitiancoder / 2404人閱讀

摘要:最近在讀這本評價頗高的語言精粹,其作者是的創(chuàng)造者,在業(yè)界頗有名氣。

最近在讀這本評價頗高的《JavaScript語言精粹》,其作者Douglas Crockford 是JSON的創(chuàng)造者,在業(yè)界頗有名氣。以下是閱讀過程中認為比較有用的摘錄的代碼,希望能對各位有所啟發(fā)

自定義的method方法
Function.prototype.method = function(name,func){//擴展Function對象,為Function對象,添加method方法,參數(shù)1是函數(shù)名字,參數(shù)2是添加的函數(shù)體
    if(!this.prototype[name]){
        this.prototype[name] = func;
    }
    return this;
}

Number.method("integer",function(){//為Number對象擴展方法integer
    return Math[this < 0 ? "ceil" : "floor"](this);//number小于0,采用Math.ceil,大于Math.floor,調(diào)用方法,傳入的實參this即number本身
})

document.writeln((-10/3).integer())//-3

String.method("trim",function(){//為String對象擴展trim方法
    return this.replace(/^s+|s+$/g,"")//正則前起空格,后起空格,全局匹配
})
document.writeln("   neat    ".trim())
模塊-閉包模擬

道格拉斯用閉包來實現(xiàn)模塊- 提供接口卻隱藏狀態(tài)與實現(xiàn)的函數(shù)/對象

//deentityfy= 尋找字符串的字符實體并轉(zhuǎn)換為對應的字符
String.method("deentityify",function(){
  //映射表
      var entity = {
        quot : """,
        lt   : "<",
        gt   : ">"

      };

  return function(){//返回函數(shù)攜帶entity
      return this.replace(/&([^&;]+);/g,function(a,b){
         //a為 匹配到的字符串,b為匹配組內(nèi)
          var r = entity[b];
          return typeof r === "string" ? r : a;
        });
      };

}()//自執(zhí)行,作者的目的是返回匿名函數(shù) 攜帶entity 的閉包
);

"<">".deentityify()
緩存(記憶)

fibonacci數(shù)列,前一種算法計算了453次,后一種算法調(diào)用了29次

//記憶
//不好的例子
var fibonacci = function(n){
    return n<2 : fibonacci(n-1) + fibonacci(n-2);
}


//好的例子
var fibonacci = function(){
    var memo = [0,1];
    var fib = function(n){
        var result = memo[n];
        if(typeof result !== "number"){
            result = fib(n-1) + fib(n-2);
            memo[n] = result;
        }
        return result;
    }
    return fib;
}();

//執(zhí)行
for(var i = 0; i <= 10; i += 1){
    document.writeln("http:// "+i+": "+fibonacci(i));
}
//執(zhí)行過的會緩存到fib閉包的memo數(shù)組里
arguments
//利用arguments實現(xiàn)不定參數(shù)的相加
var sum = function (){
    var i,sum = 0;
    for(i=0;i

關于對象和類的實現(xiàn)

這里有一些不理解

//new 關鍵字的實現(xiàn)
Function.method("new",function(){
    //創(chuàng)建新對象,繼承自構(gòu)造器的原型對象
    var that = Object.create(this.prototype)
    //調(diào)用構(gòu)造器,
    var other = this.apply(that,arguments)
    return (typeof other == "object" && other) || that;
})

if(typeof Object.create !== "function"){//Object.create ESC5 引入,為不支持的實現(xiàn)object.create
    Object.create = function(o){
        var F = function(){};//創(chuàng)建新函數(shù)對象
        F.prototype = o;//設置原型
        return new F();//通過new 返回新F
    }
}
Function.method("inherits",function(Parent){
    this.prototype = new Parent();
    return this
})
遞歸
//利用遞歸實現(xiàn)dom遍歷的方法
var walk_the_DOM = function walk(node, func){//dom 遍歷
    func(node);//調(diào)用func,傳入node
    node = node.firstChild;//更改node為其第一個子元素,如果沒有意味著終點
    while (node) {//如果有子元素,為子元素執(zhí)行walk函數(shù)本身,其node參數(shù)為之前node的第一個子元素,while循環(huán)所有子元素
        walk(node, func);
        node = node.nextSibling;//while循環(huán)此下所有子元素
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/78077.html

相關文章

  • javascript語言精粹》學習筆記 - 數(shù)組方法實現(xiàn)

    摘要:在中數(shù)組是經(jīng)常被使用到的,我們除了要學習數(shù)組的方法,還需要了解誒一下某一些方法是如何來實現(xiàn)的。然而我看了語言精粹中方法的一章,想記錄下書上的代碼,以便加深印象。方法移除數(shù)組中的第一個元素并且放回該元素。 在js中數(shù)組是經(jīng)常被使用到的,我們除了要學習數(shù)組的方法,還需要了解誒一下某一些方法是如何來實現(xiàn)的。然而我看了《javascript語言精粹》中方法的一章,想記錄下書上的代碼,以便加深印...

    felix0913 評論0 收藏0
  • javascript語言精粹

    摘要:函數(shù)調(diào)用一個函數(shù)會暫停當前函數(shù)的執(zhí)行,控制權(quán)轉(zhuǎn)交給新的函數(shù)。語句可以使函數(shù)提前返回,中斷函數(shù)的運行。如果沒有指定返回值,則返回。任何語句都會返回值,在瀏覽器面板執(zhí)行語句后的值就是返回值。在情況下不能正常工作。 對象 對象屬性的名字可以是空字符串,屬性值可以是undefined(原文為屬性值可以是除undefined以外的任何值,但是測試可以為undefined)。 嘗試從undefi...

    mist14 評論0 收藏0
  • Javascript的內(nèi)置函數(shù)(ES5)-讀Javascript語言精粹

    摘要:的內(nèi)置函數(shù)整理了一些語言精粹的方法一章的整理出的的內(nèi)置方法之后還會整理標準入門的新添加的方法整理這些作用一方面是更好的理解記憶另一方面是對于類數(shù)組可以使用原型鏈的調(diào)用即可中的一些函數(shù)輸出的為的結(jié)果因此的作用是連接數(shù)組當然可以是數(shù)字也會加入到 Javascript的內(nèi)置函數(shù)(ES5) 整理了一些Javascript語言精粹的方法一章的整理出的ES5的內(nèi)置方法; 之后還會整理ES6標準入門...

    gekylin 評論0 收藏0
  • javascript語言精粹》學習筆記 - 遞歸函數(shù)

    摘要:遞歸函數(shù)就是會直接或者間接地調(diào)用自身的一種函數(shù)。一般來說,一個遞歸函數(shù)調(diào)用自身去解決它的子問題。書上第二個例子是說遞歸函數(shù)可以非常高效率的操作樹形結(jié)構(gòu),比如。有一些語言提供了尾遞歸的優(yōu)化。好運的是,給我們帶來了尾遞歸,詳細迎接使用尾遞歸。 遞歸函數(shù)就是會直接或者間接地調(diào)用自身的一種函數(shù)。遞歸是一種強大的編程技術(shù),它把一問題分解為一組相似的子問題,每一個都用一個尋常解去解決。一般來...

    Ryan_Li 評論0 收藏0
  • JavaScript 語言精粹》讀書筆記 - 函數(shù)

    摘要:語言精粹讀書筆記第四章函數(shù)函數(shù)字面量函數(shù)字面量包含個部分第一部分,保留字第二部分,函數(shù)名,它可以被忽略。這個超級延遲綁定使得函數(shù)對高度復用。構(gòu)造器調(diào)用模式一個函數(shù),如果創(chuàng)建的目的就是希望結(jié)合的前綴來調(diào)用,那它就被稱為構(gòu)造器構(gòu)造。 《JavaScript 語言精粹》 讀書筆記 第四章 函數(shù) Functions 函數(shù)字面量 函數(shù)字面量包含4個部分: 第一部分, 保留字 function...

    wdzgege 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<