JavaScript物件導向程式設計(3) 對象

來源:互聯網
上載者:User

1.對象

對象是物件導向程式設計的基礎概念之一,只需看看這個名字就已經知道了。在我們 熟悉的物件導向語言中,比如Java或者C++,都有著類似的對象定義方法。比如,我們想定義一個類,名 字叫Person,有兩個屬性:name和age,另外有一個方法,將顯示出這個Person對象的名字和年齡,那麼 我們可以用下面的代碼實現:

Java:

public class Person {
 private String name;
 private int age;

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }

 public void introduction() {
  System.out.println("My name is " + this.name + ", my age is " + this.age);
 }

 public static void main(String[] args) {
  Person p = new Person();
  p.setName("Tom");
  p.setAge(20);
  p.introduction();
 }
}

C++的實現也是類似的,這裡不再贅述。

我們先來看一下這個類的定義:首先 聲明屬性,然後定義屬性的getter和setter方法,用來外界訪問私人變數,最後定義了它自己的方法。 這是一個比較常見的定義方式,以至於以後的很多語言,比如C#,都採用這種定義。

那麼,什麼 是對象呢?對象不過是具有特定屬性和方法的集合。雖然這並不是一個嚴格的定義,但是將屬性和它的 名字(不妨我們把它的方法也看作是它的屬性,這並沒有什麼不同)放在一起,形成一個集合,這就是對 象。也就是說,簡單來看,對象就是這種具有“鍵-值”對的形式。

2.JavaScript的 對象

“鍵-值”對的形式……這個樣子看上去是不是有些面熟?Bingo! 對了!這不就是數組的形式嗎?嗯,恭喜你想到這一點!的確,在JavaScript中,對象的定義就是像數 組的定義。下面,我們在JavaScript中對這個Person進行一下定義:

var Person = {
 "name": "Tom",
 "age": 20,
  "introduction": function() {
  alert("My name is " + this.name + ", my age is " + this.age);
 }
};
Person.introduction();

來看一下這段代碼。看上去很像數組的定義,只不 過數組一般使用數字類型作為下標,而這裡我們使用的是字串。回想一下,其實在 JavaScript中,字 符串也是可以作為數組下標的,不是嗎?好了,這裡我們聲明了一個對象Person,它有一個name,還有 一個age,而且還有一個方法顯示出這兩個屬性。

在JavaScript中,對象就是“鍵-值 ”對的形式,具體來說是"string-as-key": object-as-value的形式。也就是說,這個 鍵必須是string類型的,而值可以是任何類型的。那麼,方法呢?其實,JavaScript中的function也是 一個類型,這個在後面會有描述的,這裡僅僅Crowdsourced Security Testing道就可以了。這種數學上成為二元組的樣式很常見, 數組就是這樣的,只不過數組的鍵必須是int。同樣,JavaScript的對象也是一個特殊的二元組,只不過 鍵是string類型的。這是不是就像是一種散列?或者說是雜湊表?就是這個樣子!

如果說你覺得 每個屬性名稱都要加一個引號覺得很彆扭,那麼你大可不加!像下面的語句,JavaScript完全認為你的正 確的:

var Person = {
 name: "Tom",
 age: 20,
 introduction: function() {
  alert("My name is " + this.name + ", my age is " + this.age);
 }
}
Person.introduction();

我比較習慣於這種寫法,看上去和Java等語言差不多 。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.