iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
JavaScript

入門JavaScript系列 第 13

物件應用

  • 分享至 

  • xImage
  •  

1. 物件的合併與擴展

使用擴展運算符(...)可以輕鬆合併物件:

let person = { name: 'Alice', age: 30 };
let contact = { email: 'alice@example.com' };
let merged = { ...person, ...contact }; 
console.log(merged); // { name: 'Alice', age: 30, email: 'alice@example.com' }

2. 物件的深拷貝與淺拷貝

2.1 淺拷貝

使用 Object.assign() 進行淺拷貝:

let shallowCopy = Object.assign({}, person);

2.2 深拷貝

使用 JSON.parse()JSON.stringify() 進行深拷貝:

let deepCopy = JSON.parse(JSON.stringify(person));

3. 動態屬性

可以在運行時動態添加或修改物件的屬性:

let dynamicProperty = 'height';
person[dynamicProperty] = 170; // 添加新屬性

4. 使用 Object.defineProperty()

這個方法可以定義物件的屬性,並設定屬性描述符:

Object.defineProperty(person, 'fullName', {
    get() {
        return `${this.name} Smith`;
    },
    enumerable: true
});

5. 物件的存取器屬性

使用 getset 定義計算屬性:

let user = {
    firstName: 'John',
    lastName: 'Doe',
    get fullName() {
        return `${this.firstName} ${this.lastName}`;
    },
    set fullName(name) {
        [this.firstName, this.lastName] = name.split(' ');
    }
};

user.fullName = 'Jane Smith';
console.log(user.fullName); // 'Jane Smith'

6. 物件的繼承

使用原型繼承或 class 語法來創建繼承關係:

class Animal {
    constructor(name) {
        this.name = name;
    }

    speak() {
        console.log(`${this.name} makes a noise.`);
    }
}

class Dog extends Animal {
    speak() {
        console.log(`${this.name} barks.`);
    }
}

let dog = new Dog('Rex');
dog.speak(); // 'Rex barks.'

7. 使用 Proxy 監控物件操作

Proxy 允許你攔截和自定義對物件的操作:

let target = {};
let handler = {
    set(obj, prop, value) {
        console.log(`Setting ${prop} to ${value}`);
        obj[prop] = value;
        return true;
    }
};

let proxy = new Proxy(target, handler);
proxy.name = 'Alice'; // 'Setting name to Alice'

8. 使用 Reflect 進行操作

Reflect 對象提供了一組靜態方法,用於操作物件:

let obj = { name: 'Alice' };
Reflect.set(obj, 'age', 30); // 設置屬性
console.log(obj); // { name: 'Alice', age: 30 }

9. 物件的序列化與反序列化

使用 JSON.stringify()JSON.parse() 對物件進行序列化和反序列化:

let jsonString = JSON.stringify(person);
let parsedPerson = JSON.parse(jsonString);

10. 使用 MapSet

這些新型態的資料結構在某些情況下可以替代傳統物件,提供更好的性能和功能:

  • Map:用於儲存鍵值對,鍵可以是任何資料類型。
let map = new Map();
map.set('name', 'Alice');
console.log(map.get('name')); // 'Alice'
  • Set:用於儲存唯一值的集合。
let set = new Set();
set.add(1);
set.add(2);
set.add(1); // 重複值將被忽略
console.log(set.size); // 2

上述展示了 JavaScript 物件的功能,能夠幫助你在開發中更靈活地管理和操作數據。掌握這些技巧將有助於提高代碼的可讀性和可維護性。


上一篇
物件
下一篇
條件判斷
系列文
入門JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言