摘要:最近在讀這本評(píng)價(jià)頗高的語言精粹,其作者是的創(chuàng)造者,在業(yè)界頗有名氣。
最近在讀這本評(píng)價(jià)頗高的《JavaScript語言精粹》,其作者Douglas Crockford 是JSON的創(chuàng)造者,在業(yè)界頗有名氣。以下是閱讀過程中認(rèn)為比較有用的摘錄的代碼,希望能對(duì)各位有所啟發(fā)
自定義的method方法Function.prototype.method = function(name,func){//擴(kuò)展Function對(duì)象,為Function對(duì)象,添加method方法,參數(shù)1是函數(shù)名字,參數(shù)2是添加的函數(shù)體 if(!this.prototype[name]){ this.prototype[name] = func; } return this; } Number.method("integer",function(){//為Number對(duì)象擴(kuò)展方法integer return Math[this < 0 ? "ceil" : "floor"](this);//number小于0,采用Math.ceil,大于Math.floor,調(diào)用方法,傳入的實(shí)參this即number本身 }) document.writeln((-10/3).integer())//-3 String.method("trim",function(){//為String對(duì)象擴(kuò)展trim方法 return this.replace(/^s+|s+$/g,"")//正則前起空格,后起空格,全局匹配 }) document.writeln(" neat ".trim())模塊-閉包模擬
道格拉斯用閉包來實(shí)現(xiàn)模塊- 提供接口卻隱藏狀態(tài)與實(shí)現(xiàn)的函數(shù)/對(duì)象
//deentityfy= 尋找字符串的字符實(shí)體并轉(zhuǎn)換為對(duì)應(yīng)的字符 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ù)列,前一種算法計(jì)算了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í)行過的會(huì)緩存到fib閉包的memo數(shù)組里arguments
//利用arguments實(shí)現(xiàn)不定參數(shù)的相加 var sum = function (){ var i,sum = 0; for(i=0;i關(guān)于對(duì)象和類的實(shí)現(xiàn) 這里有一些不理解
//new 關(guān)鍵字的實(shí)現(xiàn) Function.method("new",function(){ //創(chuàng)建新對(duì)象,繼承自構(gòu)造器的原型對(duì)象 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 引入,為不支持的實(shí)現(xiàn)object.create Object.create = function(o){ var F = function(){};//創(chuàng)建新函數(shù)對(duì)象 F.prototype = o;//設(shè)置原型 return new F();//通過new 返回新F } } Function.method("inherits",function(Parent){ this.prototype = new Parent(); return this })遞歸//利用遞歸實(shí)現(xiàn)dom遍歷的方法 var walk_the_DOM = function walk(node, func){//dom 遍歷 func(node);//調(diào)用func,傳入node node = node.firstChild;//更改node為其第一個(gè)子元素,如果沒有意味著終點(diǎn) while (node) {//如果有子元素,為子元素執(zhí)行walk函數(shù)本身,其node參數(shù)為之前node的第一個(gè)子元素,while循環(huán)所有子元素 walk(node, func); node = node.nextSibling;//while循環(huán)此下所有子元素 } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/78077.html
摘要:在中數(shù)組是經(jīng)常被使用到的,我們除了要學(xué)習(xí)數(shù)組的方法,還需要了解誒一下某一些方法是如何來實(shí)現(xiàn)的。然而我看了語言精粹中方法的一章,想記錄下書上的代碼,以便加深印象。方法移除數(shù)組中的第一個(gè)元素并且放回該元素。 在js中數(shù)組是經(jīng)常被使用到的,我們除了要學(xué)習(xí)數(shù)組的方法,還需要了解誒一下某一些方法是如何來實(shí)現(xiàn)的。然而我看了《javascript語言精粹》中方法的一章,想記錄下書上的代碼,以便加深印...
摘要:函數(shù)調(diào)用一個(gè)函數(shù)會(huì)暫停當(dāng)前函數(shù)的執(zhí)行,控制權(quán)轉(zhuǎn)交給新的函數(shù)。語句可以使函數(shù)提前返回,中斷函數(shù)的運(yùn)行。如果沒有指定返回值,則返回。任何語句都會(huì)返回值,在瀏覽器面板執(zhí)行語句后的值就是返回值。在情況下不能正常工作。 對(duì)象 對(duì)象屬性的名字可以是空字符串,屬性值可以是undefined(原文為屬性值可以是除undefined以外的任何值,但是測(cè)試可以為undefined)。 嘗試從undefi...
摘要:的內(nèi)置函數(shù)整理了一些語言精粹的方法一章的整理出的的內(nèi)置方法之后還會(huì)整理標(biāo)準(zhǔn)入門的新添加的方法整理這些作用一方面是更好的理解記憶另一方面是對(duì)于類數(shù)組可以使用原型鏈的調(diào)用即可中的一些函數(shù)輸出的為的結(jié)果因此的作用是連接數(shù)組當(dāng)然可以是數(shù)字也會(huì)加入到 Javascript的內(nèi)置函數(shù)(ES5) 整理了一些Javascript語言精粹的方法一章的整理出的ES5的內(nèi)置方法; 之后還會(huì)整理ES6標(biāo)準(zhǔn)入門...
摘要:遞歸函數(shù)就是會(huì)直接或者間接地調(diào)用自身的一種函數(shù)。一般來說,一個(gè)遞歸函數(shù)調(diào)用自身去解決它的子問題。書上第二個(gè)例子是說遞歸函數(shù)可以非常高效率的操作樹形結(jié)構(gòu),比如。有一些語言提供了尾遞歸的優(yōu)化。好運(yùn)的是,給我們帶來了尾遞歸,詳細(xì)迎接使用尾遞歸。 遞歸函數(shù)就是會(huì)直接或者間接地調(diào)用自身的一種函數(shù)。遞歸是一種強(qiáng)大的編程技術(shù),它把一問題分解為一組相似的子問題,每一個(gè)都用一個(gè)尋常解去解決。一般來...
摘要:語言精粹讀書筆記第四章函數(shù)函數(shù)字面量函數(shù)字面量包含個(gè)部分第一部分,保留字第二部分,函數(shù)名,它可以被忽略。這個(gè)超級(jí)延遲綁定使得函數(shù)對(duì)高度復(fù)用。構(gòu)造器調(diào)用模式一個(gè)函數(shù),如果創(chuàng)建的目的就是希望結(jié)合的前綴來調(diào)用,那它就被稱為構(gòu)造器構(gòu)造。 《JavaScript 語言精粹》 讀書筆記 第四章 函數(shù) Functions 函數(shù)字面量 函數(shù)字面量包含4個(gè)部分: 第一部分, 保留字 function...
閱讀 1308·2019-08-30 15:44
閱讀 1979·2019-08-30 13:49
閱讀 1651·2019-08-26 13:54
閱讀 3485·2019-08-26 10:20
閱讀 3240·2019-08-23 17:18
閱讀 3294·2019-08-23 17:05
閱讀 2130·2019-08-23 15:38
閱讀 1012·2019-08-23 14:35