首頁  >  文章  >  web前端  >  淺析JavaScript存取物件屬性與方法及差異_javascript技巧

淺析JavaScript存取物件屬性與方法及差異_javascript技巧

WBOY
WBOY原創
2016-05-16 15:32:121097瀏覽

屬性是一個變量,用來表示一個物件的特徵,如顏色、大小、重量等;方法是一個函數,用來表示物件的操作,如奔跑、呼吸、跳躍等。

在JavaScript中通常使用”."運算子來存取物件的屬性的值。或使用[]作為一個關聯數組來訪問物件的屬性。

物件的屬性和方法統稱為物件的成員。

存取物件的屬性

在JavaScript中,可以使用「 . 」和「 [ ] 」來存取物件的屬性。

1. 使用「 . 」來存取物件屬性

文法:

    objectName.propertyName

其中,objectName 為物件名稱,propertyName為屬性名稱。

2. 使用「 [ ] 」來存取物件屬性

文法:

    objectName[propertyName]

其中,objectName 為物件名稱,propertyName為屬性名稱。

訪問物件的方法

在JavaScript中,只能使用「 . 」來存取物件的方法。

文法:

    objectName.methodName()

其中,objectName 為物件名稱,methodName() 為函數名稱。

【例5-1】建立一個Person類別:

function Person() {
  this.name=" 张三 "; // 定义一个属性 name
  this.sex=" 男 "; // 定义一个属性 sex
  this.age=22; // 定义一个属性 age
  this.say=function(){ // 定义一个方法 say()
    return "嗨!大家好,我的名字是 " + this.name + " ,性别是 " + this.sex + ",今年 " + this.age +"岁!";
  }
}
var zhangsan=new Person();
alert("姓名:"+zhangsan.name); // 使用“.”来访问对象属性
alert("性别:"+zhangsan.sex);
alert("年龄:"+zhangsan["age"]); // 使用“[ ]”来访问对象属性
alert(zhangsan.say);  // 使用“.”来访问对象方法

PS:淺析物件存取屬性的"."和"[]"方法區別

在JavaScript中通常使用”."運算子來存取物件的屬性的值。或使用[]作為一個關聯數組來訪問物件的屬性。但這兩種方式有什麼不同了?

例如,讀取object中的property屬性值:

    object.property

    object['property']

以上兩種方式都可以實現屬性的存取。

1.語法方面的差異

點表示法的物件的屬性名稱是標識符,而後者的屬性名稱則是字串。

2.彈性方面的差異

在JavaScript編寫程式中,可以為物件建立任意數目的屬性。但使用”.“運算符來存取一個物件的屬性時,屬性名是用標識符表示的。而在JavaScript程式中,識別碼必須逐字輸入,它們不是一種資料類型,因此程式不能對其操作。也就是說,標識符是靜態的,在程式中必須對其進行硬編碼。

而使用陣列[]表示法來存取一個物件的屬性時,屬性名稱是用字串表示的。字串是JavaScript的一種資料類型,因此可以在程式運行中操作並建立它們。

3.性能方面區別

陣列[]表示法在存取屬性值時會進行表達式運行。而點表示法是直接存取屬性值,理論上執行效率會比陣列表示法高。性能方面其實可以忽略。

某些場景必須用到陣列表示法來動態存取屬性值,這個是點表示法無法做到的。

總的來說,這兩種方法差異上不大,都有對應的使用場景。點表示法一般作為靜態物件使用時來存取屬性。而陣列表示法在動態存取屬性時就非常有用。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn