iT邦幫忙

2021 iThome 鐵人賽

DAY 18
1
自我挑戰組

JavaScript 核心觀念系列 第 18

【Day18】物件與純值

昨天的文章有提到物件可以使用 . 來新增屬性,以下使用各種型別來新增屬性

物件

物件新增屬性

const family = {};
family.name = 'weiwei';
console.log(family);  // {name: 'weiwei'}

純值

也許有人會問什麼是純值?

只要是原始型別就是純值

const newString = '小明';
newString.name = 'weiwei';
console.log(newString);  // '小明'
console.log(newString.name);  // undefined

在 JavaScript 中如果該屬性不存在時會回傳 undefined

因此從範例可以知道純值是無法新增屬性

建構式

const newString2 = new String('weiwei');
newString2.name = 'weiwei';
console.log(newString);

我們可以看到在 newString 中新增了 name 屬性,

而在純值範例中得知純值無法新增屬性,

因此可以得知建構式為物件型別

陣列

const arr = [1, 2, 3];
arr.name = 'weiwei';
console.log(arr);

範例中得知我們能夠在陣列中加入屬性,

因此得知陣列為物件型別,

當我們要取出 name 的值時,可以使用 arr.namearr['name'] 來取值

函式

function callName() {
    console.log('呼叫 weiwei');
};

console.log(callName);
console.log(typeof callName);  // function

我們能看見單純使用 callName 只會看見函式內容,

無法看見內部屬性,而且函式型別為 function,

接著我們使用 console.dir() 來顯示 callName

function callName() {
    console.log('呼叫 weiwei');
};

console.dir(callName);

此時我們能看見函式內部的屬性,

而函式內部的 name 屬性是無法被修改的,

該屬性的值表示函式名稱

當我們在函式中加入屬性時

function callName() {
    console.log('呼叫 weiwei');
};

callName.wei = 'weiwei';

console.dir(callName);

我們可以看見在函式的屬性中新增 wei 的屬性,

因此可以得知函式也是物件

結語

今天主要介紹純值跟物件的關係,

純值無法新增屬性,物件可以,

因此可以透過新增屬性的方式,

來了解一個值是純值還是物件,

以上就是今天的內容,感謝觀看!!


上一篇
【Day17】物件結構與存取
下一篇
【Day19】傳值和傳址(傳參考)
系列文
JavaScript 核心觀念30

尚未有邦友留言

立即登入留言