• 軟件測試技術
  • 軟件測試博客
  • 軟件測試視頻
  • 開源軟件測試技術
  • 軟件測試論壇
  • 軟件測試沙龍
  • 軟件測試資料下載
  • 軟件測試雜志
  • 軟件測試人才招聘
    暫時沒有公告

字號: | 推薦給好友 上一篇 | 下一篇

理解JavaScript面向對象的思路[1]

發布: 2009-11-12 09:57 | 作者: 不詳 | 來源: 領測軟件測試網采編 | 查看: 35次 | 進入軟件測試論壇討論

領測軟件測試網

理解JavaScript面向對象的思路[1]  Java開發

關鍵字:JavaScript 面向對象

  一般來說大家比較熟悉的面向對象方式是基于類的面向對象,聲明一個類,然后在根據類聲明的描述去創建對象,通過類與類之間的繼承和組合關系來復用代碼。大多數情況下,基于類的面向對象語言(C++,C#,Java之類的)都把類整合進自己的類型系統,即每個類(Class)同時也是一個變量類型(Variable Type),并允許子類類型的值被賦值給父類類型變量。

  而JS的設計采用了一種完全不同的思路。首先JS的類型是不可擴展的(就是說,語言的使用者無法添加新的類型)這樣就無法采用上述語言的做法。根據語言標準,JS設計了6種用戶可以使用的數據類型(因為JS是弱類型的,所以變量沒有類型,只有數據有類型):

  Boolean Number String Null Undefined Object

  為了實現面向對象,JS把所有的對象放到Object類型中,這樣,JS就有6種用戶可使用的數據類型。除了Undefined,JS為所有的類型提供了字面值(literal)語法,現在來看,JS的Object字面值表示設計的相當成功,現在甚至成為了一種數據交換的格式,這就是大家所熟悉的JSON.A Sample:

  var aTShirt={color:"yellow",size:"big"}

  作為動態語言,JS允許使用者對一個已經創建的對象添加或者刪除屬性。對一個不存在的屬性賦值即向其添加屬性,delete關鍵字被用于刪除屬性。這個delete比較容易跟C++的delete運算符混淆,后者是用來釋放不再使用的對象的。

  本來有了這些語法,已經可以做基本的面向對象編程了,但是僅僅如此,JS代碼復用性比其它語言弱太多。比如,你甚至無法為一組對象做一個統一的操作,必須通過循環遍歷來實現,于是JS引入了原型(prototype),具體的實現方式是為每個對象規定一個私有屬性[[prototype]],當讀取一個對象的屬性時,如果對象本身沒有這個屬性,會嘗試訪問[[prototype]]的相應屬性。具體實現中,[[prototype]]所指向的對象仍然可以有[[prototype]],實際的訪問就是一個鏈式的操作,直到找到這個屬性或者[[prototype]]為空為止,所以常常聽到[[prototype]]鏈的說法。為了防止[[prototype]]出現循環,JS引擎會在任何對象的[[prototype]]屬性被修改時檢查。

延伸閱讀

文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/

TAG: JavaScript Javascript javascript 面向對象 思路


關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97