《JavaScript權(quán)威指南第六版》百度網(wǎng)盤(pán)pdf最新全集下載:

榮昌ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!
鏈接:
?pwd=5z0p 提取碼:5z0p
簡(jiǎn)介:JavaScript權(quán)威指南主要講述的內(nèi)容涵蓋JavaScript語(yǔ)言本身,以及Web瀏覽器所實(shí)現(xiàn)的JavaScript API。本書(shū)第6版涵蓋了HTML5和ECMAScript 5,很多章節(jié)完全重寫(xiě),新增的章節(jié)包括jQuery、服務(wù)器端JavaScript、圖形編程以及 JavaScript式的面向?qū)ο蟆1緯?shū)不僅適合初學(xué)者系統(tǒng)學(xué)習(xí),也適合有經(jīng)驗(yàn)的 JavaScript 開(kāi)發(fā)者隨手翻閱。 ?
經(jīng)常看到一些JavaScript的代碼臟亂得無(wú)法理解,到處都是屬性和方法,或者一個(gè)循環(huán)套著一個(gè)循環(huán)。但如果使用面向?qū)ο缶湍芎芎玫睦砬宕a,并方便理解和修改代碼。如果你不希望自己的代碼只有上帝理解的話(huà),就請(qǐng)盡量考慮使用面向?qū)ο蟮哪J健?/p>
譯文正文:
到處都是屬性、方法,代碼極其難懂,天哪,我的程序員,你究竟在做什么?仔細(xì)看看這篇指南,讓我們一起寫(xiě)出優(yōu)雅的面向?qū)ο蟮腏avaScript代碼吧!
作為一個(gè)開(kāi)發(fā)者,能否寫(xiě)出優(yōu)雅的代碼對(duì)于你的職業(yè)生涯至關(guān)重要。隨著像Node.js這類(lèi)技術(shù)的發(fā)展,你甚至可以在服務(wù)器端使用JavaScript了。同樣的,你也可以使用JavaScript來(lái)控制MongoDB的持續(xù)數(shù)據(jù)存儲(chǔ)。
文本標(biāo)記
文本標(biāo)記只是JavaScript里創(chuàng)建對(duì)象的一種方法,當(dāng)然這里肯定不止這一種,但它是你在只打算創(chuàng)建一個(gè)對(duì)象實(shí)例時(shí)的首選方法。
var bill = {};
上面的代碼并不實(shí)用,它只是一個(gè)空對(duì)象。接下來(lái)我們動(dòng)態(tài)地向這個(gè)對(duì)象中添加一些屬性和方法。
bill.name = "Bill E Goat"; bill.sound = function() { console.log( 'bahhh!' ); };
這里添加了屬性name,并且給它分配了值"Bill E Goat"。我們并不需要先創(chuàng)建一個(gè)空對(duì)象,而可以把所有代碼直接寫(xiě)在一對(duì)括號(hào)里。
var bill = { name: "Bill E Goat", sound: function() { console.log( 'bahhh!' ); }};
是不是很美觀?訪問(wèn)它的屬性和方法就像呼吸一樣簡(jiǎn)單、自然。
bill.name; // "Bill E Goat" bill.sound(); // "bahhh"
如果屬性名不是一個(gè)合法的標(biāo)志符,我們還可以這樣訪問(wèn)它:
bill['name']; // "Bill E Goat"
注意:我在調(diào)用方法時(shí)在其后添加了圓括號(hào)。現(xiàn)在,我們?cè)僦貙?xiě)一下當(dāng)前的sound方法,并添加一個(gè)參數(shù)。
bill.sound = function(noise) { console.log(noise); }; bill.sound("brrr!"); // "brrr!" He's cold :)
很好,我們已經(jīng)傳入?yún)?shù)了,并且在方法定義中訪問(wèn)了它。接下來(lái),向?qū)ο笾性黾右粋€(gè)新方法來(lái)訪問(wèn)name屬性。
bill.sayName = function() { console.log( "Hello " + this.name ); }; bill.sayName(); // "Hello Bill E Goat"
我們可以使用this.propertyName(在本例中即this.name)在方法內(nèi)訪問(wèn)屬性。
bill.sayName; // function
怎么回事?訪問(wèn)sayName方法返回了一個(gè)方法定義。現(xiàn)在讓我們?cè)偕钊胄?/p>
var sound = bill.sound; sound('moo!'); // "moo!"
現(xiàn)在我們指定了sound方法為一個(gè)局部函數(shù),可以調(diào)用這個(gè)函數(shù)并且傳遞參數(shù)。你認(rèn)為在復(fù)制bill的時(shí)候會(huì)發(fā)生什么?(類(lèi)比下克隆羊Dolly)
var sally = bill; sally.name; // "Bill E Goat",可它的名字是Sallysally.name = "Sally"; sally.name; // "Sally",好些了bill.name; // "Sally",問(wèn)題又轉(zhuǎn)移到bill身上了
上面的例子中我們新建了一個(gè)變量sally,并使它和bill相同,所以bill和sally會(huì)在內(nèi)存中引用了同一個(gè)對(duì)象。這時(shí)候給改變一塊它們就會(huì)同時(shí)發(fā)生改變。再看看下面這段代碼:
bill.name = "Bill E Goat"; bill.sayName(); // "Hello Bill E Goat"; var sayName = bill.sayName; sayName; // function 目前為止一切順利sayName(); // "Hello ",為什么這里又不再顯示bill的名字了?
bill的name是一個(gè)本地實(shí)例變量,只對(duì)bill可得。當(dāng)sayName方法被創(chuàng)建為全局變量時(shí),當(dāng)它碰到this.name聲明時(shí),它會(huì)在全局查找name的值。唯一的問(wèn)題在于name還沒(méi)有被定義。現(xiàn)在讓我們?cè)谌侄xname,看看會(huì)發(fā)生什么:
var name = "Bearded Octo"; sayName(); // "Hello Bearded Octo"
這里我們?cè)谌址秶鷥?nèi)定義了name變量,并且賦予了值"Bearded Octo"。當(dāng)我們?cè)谡{(diào)用sayHello方法時(shí)它會(huì)在全局范圍內(nèi)查找name變量,最終會(huì)獲得值"Bearded Octo"。我們?yōu)槭裁床粸檫@幾個(gè)對(duì)象建立一個(gè)共同的“類(lèi)”呢?
構(gòu)造函數(shù)
構(gòu)造函數(shù)是另一個(gè)編寫(xiě)面向?qū)ο驤avaScript代碼的方法,當(dāng)你需要初始化對(duì)象的屬性、方法,或者需要?jiǎng)?chuàng)建多個(gè)屬性、方法各不相同的實(shí)例時(shí),它將是你最佳的選擇。同樣我們先從創(chuàng)建一個(gè)空對(duì)象開(kāi)始:
function Game() {};
這個(gè)對(duì)象包括自己的屬性,你甚至可以在創(chuàng)建對(duì)象時(shí)傳入屬性,然后再對(duì)其進(jìn)行修改。
var zelda = new Game(); var smb = new Game(); zelda.title = "Legend of Zelda"; smb.title = "Super Mario Brothers"; zelda.title; // "Legend of Zelda" smb.title; // "Super Mario Brothers"
現(xiàn)在這個(gè)對(duì)象已經(jīng)有自己的方法了!新創(chuàng)建對(duì)象時(shí)我們甚至可以傳遞屬性,之后再修改。
function Game(title) { this.title = typeof title !== 'undefined' ? title : ""; }; var zelda = new Game("Legend of Zelda"); zelda.title; // "Legend of Zelda" zelda.title = "Ocarina of Time"; zelda.title; // "Ocarina of Time" var blank = new Game(); blank.title; // ""
也許你沒(méi)看明白第二行的內(nèi)容,其實(shí)是使用了三元操作來(lái)避免單行的if else,它和下面標(biāo)準(zhǔn)的if else語(yǔ)句是一個(gè)意思。
if (typeof title !== 'undefined') { this.title = title; } else { this.title = ""; } // Is the same as this.title = typeof title !== 'undefined' ? title : "";
如果title變量在對(duì)象被創(chuàng)建時(shí)傳入,title實(shí)例變量將會(huì)指定為title的值。如果沒(méi)有值傳入,那么title將會(huì)被初始化為默認(rèn)值""。我們同樣可以創(chuàng)建一個(gè)方法來(lái)訪問(wèn)這個(gè)屬性:
zelda.loveTitle = function() { console.log( "I love " + this.title ); }; zelda.loveTitle(); // "I love Ocarina of Time"
這樣就很整潔了,但是我們還能做得更好。我們可以在Game類(lèi)中添加一個(gè)方法,這樣所有Game類(lèi)的實(shí)例將都能使用此方法。
Game.prototype.heartIt = function() { console.log( "I heart " + this.title ); }; zelda.heartIt(); // "I heart Ocarina of Time" smb.heartIt(); // "I heart Super Mario Brothers"
不適合。新手的話(huà)建議看「JavaScript DOM 編程藝術(shù)」或者「ppk 談 JavaScript」,都是入門(mén)的經(jīng)典;進(jìn)階的可以考慮「JavaScript 高級(jí)程序設(shè)計(jì)」還有「JavaScript DOM 高級(jí)程序設(shè)計(jì)」等。
新聞名稱(chēng):javascript面向?qū)ο缶幊讨改?JavaScript面向?qū)ο缶幊讨改?百度網(wǎng)盤(pán)
轉(zhuǎn)載來(lái)源:http://chinadenli.net/article18/dsegedp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、小程序開(kāi)發(fā)、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站排名、網(wǎng)站建設(shè)、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)