亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      考試首頁(yè) | 考試用書 | 培訓(xùn)課程 | 模擬考場(chǎng) | 考試論壇  
        當(dāng)前位置:設(shè)計(jì)制作 > JavaScript > 文章內(nèi)容
        

      使用JavaScript實(shí)現(xiàn)觀察者模式

       [ 2017年9月4日 ] 【

      原文出處://www.codeproject.com/KB/scripting/Observer_Pattern_JS.aspx

      JavaScript的簡(jiǎn)單介紹

      JavaScript是一種基于原型(prototype)的腳本語(yǔ)言(以前叫LiveScript)。它的語(yǔ)法松散,類似于C語(yǔ)言。該腳本語(yǔ)言是由Netscape社團(tuán)開發(fā)的,用于Navigator瀏覽器。和C語(yǔ)言一樣,JavaScript本身沒有構(gòu)造函數(shù)和析構(gòu)函數(shù)。C語(yǔ)言依賴于標(biāo)準(zhǔn)輸入/輸出庫(kù);而JavaScript則依賴于執(zhí)行它的宿主環(huán)境。這種腳本語(yǔ)言使用自定義函數(shù),其他語(yǔ)言中可能會(huì)被稱為過(guò)程、例程或功能;趙eb的JavaScript主要用于在web頁(yè)面中和DOM(即文檔對(duì)象模型)進(jìn)行交互,以便完成一些僅使用HTML無(wú)法實(shí)現(xiàn)的功能。JScript是微軟推出的和 JavaScript 對(duì)應(yīng)的一種腳本語(yǔ)言,它用于微軟的IE瀏覽器當(dāng)中。

      在JavaScript中創(chuàng)建自定義對(duì)象

      創(chuàng)建一個(gè)新的JavaScript對(duì)象需要2個(gè)步驟。首先,你需要?jiǎng)?chuàng)建一個(gè)函數(shù),函數(shù)名就是新建的類的名稱。這個(gè)函數(shù)也就是我們經(jīng)常說(shuō)的 構(gòu)造函數(shù)。然后,你必須使用 new 操作符,后面跟上對(duì)象的名稱以及一些必要的參數(shù)來(lái)創(chuàng)建一個(gè)對(duì)象的實(shí)例。下面的代碼定義了一個(gè) Person 函數(shù),然后使用 new 操作符創(chuàng)建了 Person 的實(shí)例:

      function Person(name, surname)
      {
         this.name = name;
         this.surname = surname;
      }

      var salvo = new Person('Salvatore', 'Vetro');

      this關(guān)鍵字是指向你當(dāng)前正在執(zhí)行的對(duì)象的實(shí)例,因此,允許你在當(dāng)前對(duì)象上添加或修改對(duì)象的屬性。

      如何為對(duì)象添加方法?

      在JavaScript中,通過(guò)調(diào)用綁定了原型屬性的 構(gòu)造函數(shù) 來(lái)創(chuàng)建任何對(duì)象。添加新方法的語(yǔ)法如下:

      customeObject.prototype.newMethodName = function;
      //方法體
      Person.prototype.Speak = function(){...};

      如果你在一個(gè)對(duì)象的prototype屬性上添加一個(gè)方法,那么,所有通過(guò)該對(duì)象的構(gòu)造函數(shù)創(chuàng)建的實(shí)例都具有這個(gè)新方法。注意,prototype 本身也是一個(gè)對(duì)象,而且能夠通過(guò) 對(duì)象文字語(yǔ)法(object literal syntax) 來(lái)為它定義屬性和方法:

      function NewObject()
      {
         alert("I am a new object.");
      }

      NewObject.prototype =
      {
         alert1 : function(str){alert(str);}, //新方法
         name : 'As you want', //新屬性
         Alert2 : function(){alert('Bye.');}, //新方法
      };
      var newObject = new NewObject();
      newObject.alert1("Ciao");
      newObject.name;
      newObject.alert2();

      腳本每次嘗試讀/寫對(duì)象的屬性的時(shí)候,JavaScript會(huì)按照特定的順序來(lái)搜尋和指定名稱匹配的屬性。順序如下:

      l 如果該屬性已經(jīng)分配給當(dāng)前對(duì)象,則使用該屬性的值;

      l 如果在當(dāng)前對(duì)象中沒有搜索到指定的屬性,則檢查該對(duì)象構(gòu)造函數(shù)的prototype屬性的值;

      l 沿著prototype鏈一直查找,直到找到匹配的屬性(已經(jīng)為它賦值),否則,一直會(huì)查找到 Object 對(duì)象。因此,如果你改變了構(gòu)造函數(shù)的prototype屬性的值,并且沒有在構(gòu)造函數(shù)的某個(gè)實(shí)例中重寫屬性的值,JavaScript會(huì)返回對(duì)象當(dāng)前prototype屬性的值。

      將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動(dòng)訪問(wèn)考試網(wǎng) | 復(fù)制本頁(yè)地址,傳給QQ/MSN上的好友 | 申請(qǐng)鏈接 | 意見留言 TOP
      關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
      Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved