华南俳烁实业有限公司

考試首頁 | 考試用書 | 培訓課程 | 模擬考場 | 考試論壇  
  當前位置:設(shè)計制作 > JavaScript > 文章內(nèi)容
  

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

 [ 2017年9月4日 ] 【

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

JavaScript的簡單介紹

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

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

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

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

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

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

如何為對象添加方法?

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

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

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

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();

腳本每次嘗試讀/寫對象的屬性的時候,JavaScript會按照特定的順序來搜尋和指定名稱匹配的屬性。順序如下:

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

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

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

本文糾錯】【告訴好友】【打印此文】【返回頂部
將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動訪問考試網(wǎng) | 復制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導航  考試論壇
Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved
鄂伦春自治旗| 阿荣旗| 瓦房店市| 延川县| 利辛县| 化州市| 承德市| 抚顺县| 赞皇县| 德惠市| 云龙县| 邹城市| 东山县| 抚顺县| 冕宁县| 乡宁县| 三都| 南康市| 长武县| 台南县| 彩票| 右玉县| 金山区| 寿阳县| 航空| 腾冲县| 云浮市| 交城县| 迁安市| 齐河县| 海门市| 晋中市| 罗甸县| 全椒县| 宝兴县| 云和县| 搜索| 梁山县| 清镇市| 灵武市| 韩城市|