1. 程式人生 > >JavaScript 面向物件之一 —— 物件(認識物件)

JavaScript 面向物件之一 —— 物件(認識物件)

本系列文章根據《愛前端邵山歡老師深入淺出的js面向物件》視訊整理歸納

認識物件

物件在JavaScript中分為狹義物件和廣義物件兩種。

● 所謂的狹義物件,就是用{}這種字面量的形式定義的物件,它是一組屬性的無序集合
var obj = {
    name : '張鑫',
    age : 25,
    sex : '男',
    hobby : ['打遊戲','看電影','聽音樂','看書']
}

上面的物件,表示一個“人”,裡面只有四個屬性,沒有其他東西。

物件除了能儲存值,還能儲存值的“語義”,值的語義,在術語上稱作keys(鍵)。

所以得出結論,物件就是一組值與值的語義的封裝。

● 廣義物件是一個物件,除了一組屬性外,還有別的東西。

比如DOM元素是物件,但又與我們之前說的狹義物件中的“只有一組值”不同。DOM元素擁有物件的一切特徵,但其除了屬性值外還有實體的HTML標籤。

var box = document.getElementById('box');
console.log(typeof box);   //object

我們可以通過‘.’語法給其新增屬性,並訪問

box.name = '張鑫';
box.age = 25;
box.sex = '男';
console.log(box.sex);  // 男

比如陣列,陣列也是物件,物件的所有特徵它也具備,也可以新增屬性並進行訪問,但是其除了屬性值以外還擁有一組數。

var arr = [1,2,3,4,5,6];
console.log(typeof arr);  // object

//新增屬性

arr.name = '張鑫';
arr.age = 25;
arr.sex = '男';
console.log(arr.sex);  // 男

綜上所述,得出結論:系統內建的所有引用型別值,都是物件,他們都能夠新增自定義屬性,並進行訪問。如:

function 函式
array 陣列
regexp 正則表示式
DOM 元素
window、document、Math、Date 物件
Number、String 內建包裝建構函式得到的值

我們只能建立狹義物件,而不能建立廣義物件。

最後我們得出結論,能夠新增屬性的我們即可認為它是一個物件。