六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

怎么迅速有效果掌握JavaScript面向對象編程向導圖文詳細教程

[摘要]軟件等級:更新時間:2016-04-11JavaScript 2016語言精髓與編程實踐(高清pdf版)立即下載怎樣快速有效掌握JavaScript面向對象編程指南教程隨著像Node.js這類技術的...

怎樣快速有效掌握JavaScript面向對象編程指南教程

隨著像Node.js這類技術的發展,可以在服務器端使用JavaScript了。你也可以使用JavaScript來控制MongoDB的持續數據存儲。使用面向對象就能很好的理清代碼,并方便理解和修改代碼。就請考慮使用面向對象的模式。

作為一個開發者,是否寫出優雅的代碼對于你的職業生涯至關重要。到處都是屬性、方法,代碼極其難懂,天哪,我的程序員,你究竟在做什么?仔細看看這篇指南,讓我們一起寫出優雅的面向對象的JavaScript代碼吧!

文本標記

文本標記只是JavaScript里創建對象的一種方法,當然這里肯定不止這一種,但它是你在只打算創建一個對象實例時的首選方法。


  1. var bill = {};

上面的代碼并不實用,它只是一個空對象。接下來我們動態地向這個對象中添加一些屬性和方法。


  1. bill.name = "Bill E Goat";
  2. bill.sound = function() {
  3. console.log( 'bahhh!' );
  4. };

這里添加了屬性name,并且給它分配了值"Bill E Goat"。我們并不需要先創建一個空對象,而可以把所有代碼直接寫在一對括號里。


  1. var bill = {
  2. name: "Bill E Goat",
  3. sound: function() {
  4. console.log( 'bahhh!' );
  5. }
  6. };

是不是很美觀?訪問它的屬性和方法就像呼吸一樣簡單、自然。


  1. bill.name; // "Bill E Goat"
  2. bill.sound(); // "bahhh"

如果屬性名不是一個合法的標志符,我們還可以這樣訪問它:


  1. bill['name']; // "Bill E Goat"

注意:我在調用方法時在其后添加了圓括號�,F在,我們再重寫一下當前的sound方法,并添加一個參數。


  1. bill.sound = function(noise) {
  2. console.log(noise);
  3. };
  4. bill.sound("brrr!"); // "brrr!" He's cold :)

很好,我們已經傳入參數了,并且在方法定義中訪問了它。接下來,向對象中增加一個新方法來訪問name屬性。


  1. bill.sayName = function() {
  2. console.log( "Hello " + this.name );
  3. };
  4. bill.sayName(); // "Hello Bill E Goat"

我們可以使用this.propertyName(在本例中即this.name)在方法內訪問屬性。


  1. bill.sayName; // function

怎么回事?訪問sayName方法返回了一個方法定義�,F在讓我們再深入些。


  1. var sound = bill.sound;
  2. sound('moo!'); // "moo!"

現在我們指定了sound方法為一個局部函數,可以調用這個函數并且傳遞參數。你認為在復制bill的時候會發生什么?(類比下克隆羊Dolly)


  1. var sally = bill;
  2. sally.name; // "Bill E Goat",可它的名字是Sally
  3. sally.name = "Sally";
  4. sally.name; // "Sally",好些了
  5. bill.name; // "Sally",問題又轉移到bill身上了

上面的例子中我們新建了一個變量sally,并使它和bill相同,所以bill和sally會在內存中引用了同一個對象。這時候給改變一塊它們就會同時發生改變。再看看下面這段代碼:


  1. bill.name = "Bill E Goat";
  2. bill.sayName(); // "Hello Bill E Goat";
  3. var sayName = bill.sayName;
  4. sayName; // function 目前為止一切順利
  5. sayName(); // "Hello ",為什么這里又不再顯示bill的名字了?

bill的name是一個本地實例變量,只對bill可得。當sayName方法被創建為全局變量時,當它碰到this.name聲明時,它會在全局查找name的值。唯一的問題在于name還沒有被定義。現在讓我們在全局定義name,看看會發生什么:


  1. var name = "Bearded Octo";
  2. sayName(); // "Hello Bearded Octo"

這里我們在全局范圍內定義了name變量,并且賦予了值"Bearded Octo"。當我們在調用sayHello方法時它會在全局范圍內查找name變量,最終會獲得值"Bearded Octo"。我們為什么不為這幾個對象建立一個共同的“類”呢?

構造函數

構造函數是另一個編寫面向對象JavaScript代碼的方法,當你需要初始化對象的屬性、方法,或者需要創建多個屬性、方法各不相同的實例時,它將是你最佳的選擇。同樣我們先從創建一個空對象開始:


  1. function Game() {};

這個對象包括自己的屬性,你甚至可以在創建對象時傳入屬性,然后再對其進行修改。


  1. var zelda = new Game();
  2. var smb = new Game();
  3. zelda.title = "Legend of Zelda";
  4. smb.title = "Super Mario Brothers";
  5. zelda.title; // "Legend of Zelda"
  6. smb.title; // "Super Mario Brothers"

現在這個對象已經有自己的方法了!新創建對象時我們甚至可以傳遞屬性,之后再修改。


  1. function Game(title) {
  2. this.title = typeof title !== 'undefined' ? title : "";
  3. };
  4. var zelda = new Game("Legend of Zelda");
  5. zelda.title; // "Legend of Zelda"
  6. zelda.title = "Ocarina of Time";
  7. zelda.title; // "Ocarina of Time"
  8. var blank = new Game();
  9. blank.title; // ""

也許你沒看明白第二行的內容,其實是使用了三元操作來避免單行的if else,它和下面標準的if else語句是一個意思。


  1. if (typeof title !== 'undefined') {
  2. this.title = title;
  3. } else {
  4. this.title = "";
  5. }
  6. // Is the same as
  7. this.title = typeof title !== 'undefined' ? title : "";

如果title變量在對象被創建時傳入,title實例變量將會指定為title的值。如果沒有值傳入,那么title將會被初始化為默認值""。我們同樣可以創建一個方法來訪問這個屬性:


  1. zelda.loveTitle = function() {
  2. console.log( "I love " + this.title );
  3. };
  4. zelda.loveTitle(); // "I love Ocarina of Time"

還可以在Game類中添加一個方法,這樣所有Game類的實例將都能使用此方法。


  1. Game.prototype.heartIt = function() {
  2. console.log( "I heart " + this.title );
  3. };
  4. zelda.heartIt(); // "I heart Ocarina of Time"
  5. smb.heartIt(); // "I heart Super Mario Brothers"

本教程只是JavaScript面向對象編程的入門,希望我的這個大家有所幫助,預祝大家快樂!有問題大家積極回帖討論下哈!


學習教程快速掌握從入門到精通的電腦知識




主站蜘蛛池模板: 综合图片亚洲 | 人人揉揉香蕉大免费不卡 | 日韩欧美专区 | 一区二区三区国产美女在线播放 | 亚洲欧美综合一区二区三区四区 | 青青青草视频在线 | 青草社区在线 | 欧美在线播放 | 欧美视频在线免费看 | 欧美亚洲国产日韩综合在线播放 | 青青草污视频 | 亚洲区欧美 | 欧美视频三级 | 亚洲国产精品久久婷婷 | 一二三四在线观看日本 | 天天摸天天碰天天碰 | 欧美亚洲国产日韩 | 在线亚洲+欧美+日本专区 | 青青青爽视频在线观看 | 深爱激情五月婷婷 | 亚洲欧美日韩在线播放 | 亚洲sss| 色噜噜在线视频 | 午夜一级精品免费毛片 | 性欧美xxxx | 中文有码第一页 | 日韩免费高清一级毛片在线 | 在线资源天堂 | 天天插日日插 | 四虎在线免费 | 欧美资源在线 | 日本在线视频网站www色下载 | 色婷婷中文字幕 | 特片网在线观看 | 伊人久久伊人 | 新激情五月 | 人人擦人人 | 亚洲狼人综合 | 亚洲天堂男人 | 日本午夜www高清视频 | 日日摸夜夜欧美一区二区 |