用AJAX開發智能Web應用程序之高級篇

發表于:2008-01-29來源:作者:點擊數: 標簽:開發
一、AJAX語言——對象面向的JavaScript 由定義來看,JavaScript是典型的AJAX語言。不同于Java,JavaScript并不強調OO風格的編碼。然而,令人吃驚的是JavaScript居然全面支持所有的OO語言的主要屬性:封裝、繼承和多態性。Douglas Crockford甚至稱JavaScript
 一、AJAX語言——對象面向的JavaScript

  由定義來看,JavaScript是典型的AJAX語言。不同于Java,JavaScript并不強調OO風格的編碼。然而,令人吃驚的是JavaScript居然全面支持所有的OO語言的主要屬性:封裝、繼承和多態性。Douglas Crockford甚至稱JavaScript是"世界上最易被誤解的編程語言"。讓我們回顧一下JavaScript的面向對象的地方吧。

  數據類型

  在Java中,一個類定義了一個數據和它的相關行為的組合。盡管JavaScript保留了class關鍵字,但是它不支持與常規OOP語言一樣的語義。

  這聽起來可能覺得奇怪,但是在JavaScript中,對象是用函數來定義的。事實上,通過在下面的示例中定義一個函數,你就定義了一個簡單的空類Calculator:

  function Calculator() {}

  一個新的實例的創建與在Java中相同-使用new操作符:

  var myCalculator = new Calculator();

  上面這個函數不僅定義一個類,而且還擔當了一個構造器。在此,操作符new實現了這一魔術-實例化一個類Calculator的對象并且返回一個對象參考而不是只調用該函數。

  創建這樣的空類是沒錯,但在實際中并沒有多大用處。下面,我們準備使用一個Java-腳本原型結構來填充類定義。JavaScript使用原型當作創建對象的模板。所有的原型屬性和方法被參考引用地復制到一個類的每個對象中,所以它們都具有相同的值。你可以改變一個對象中的原型屬性的值,并且該新值會覆蓋從原型中復制過來的缺省值,但是這僅對于在一個實例中。下列語句將把一個新屬性添加到Calculator對象的原型上:

  Calculator.prototype._prop = 0;

  既然JavaScript并沒有提供一個方法來從句法上表示一個類定義,那么我們將使用with語句來標記該類的定義邊界。這也將使得示例代碼更為短小,因為該with語句被允許在一個指定的對象上執行一系列的語句而不需要限制屬性。

  function Calculator() {};

  with (Calculator) {

   prototype._prop = 0;

   prototype.setProp = function(p) {_prop = p};

   prototype.getProp = function() {return _prop};

  }

 

原文轉自:http://www.anti-gravitydesign.com

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