JavaScript 面向物件之一 —— 物件(認識物件)
阿新 • • 發佈:2018-11-09
本系列文章根據《愛前端邵山歡老師深入淺出的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 內建包裝建構函式得到的值
我們只能建立狹義物件,而不能建立廣義物件。
最後我們得出結論,能夠新增屬性的我們即可認為它是一個物件。