const person = {
name: "小明",
};
const person2 = person;
person2.name = "漂亮阿姨";
//漂亮阿姨
console.log(person.name);
const person = {
name: "小明",
};
function fn(obj) {
obj.name = "漂亮阿姨";
}
fn(person);
//漂亮阿姨
console.log(person.name);
當 key 名稱存在於變數中時,可使用中括號取用:
var variable = 'go';
obj[variable]();
const propertyName = "name";
const obj = {
[propertyName]: "小明",
姓名: "小華",
1: 1,
'❤️': "這是一個 emoji",
inner: {
姓名: "內層的物件"
}
};
console.log(obj);
console.log(obj.test?.name); // undefined,不拋錯
函式屬於物件型別,因此可以使用物件的方式賦值屬性
const fn = function () {};
const fn2 = fn;
fn2.age = 18;
console.dir(fn);
console.log(fn.age);
Number.parseInt 和全域的 parseInt 指向同一個記憶體位置
//100
console.log(Number.parseInt("100元"));
//true
console.log(window.parseInt === Number.parseInt);
//true
console.log(parseInt("100元"));
將內建函數parseInt賦值給一個常數變數"轉數值"。轉數值這個變數就指向parseInt函數
const 轉數值 = parseInt;
console.log(轉數值("100元"));
將 parseInt 指向 null,不影響 Number.parseInt
parseInt = null;
console.log(Number.parseInt("100元"));
函式內直接修改傳入物件的屬性,會影響原物件
const family = {
name: "小明家",
Ming: {
name: "小明",
},
};
const Ming = family.Ming;
function fn(obj) {
obj.name = "漂亮阿姨";
}
fn(Ming);
//{name : '漂亮阿姨'}
console.log(Ming);
若函式內重新賦值一個新物件,則不影響原本的物件:
const family = {
name: "小明家",
Ming: {
name: "小明",
},
};
const Ming = family.Ming;
function fn(obj) {
obj = {
name: "杰倫",
};
obj.name = "漂亮阿姨";
}
fn(Ming);
console.log(Ming);
常見方法:
const family = {
name: "小明家",
Ming: { name: "小明" },
};
const newFamily = { ...family };
newFamily.name = "小華";
newFamily.Ming.name = "漂亮阿姨";
console.log(newFamily);
console.log(family);
const family = {
name: "小明家",
member: {
name: "小明",
},
};
const newFamily = JSON.parse(JSON.stringify(family));
newFamily.name = "小華家";
newFamily.member.name = "漂亮阿姨";
console.log(family);
console.log(newFamily);
當函式內部 obj = {...},只會改變內部參數的參考,不影響原始物件:
const person = {};
function fn(obj) {
obj = {
name: 1,
};
}
fn(person);
console.log(person);
物件可透過 Object.keys 和 Object.values 使用陣列方法:
const family = {
Ming: { name: '小明' },
Jay: { name: '杰倫' },
Auntie: { name: '漂亮阿姨' }
};
console.log(Object.keys(family)); // ['Ming', 'Jay', 'Auntie']
console.log(Object.values(family)); // [ {...}, {...}, {...} ]
Object.values(family).forEach(item => {
console.log(item);
});
Object.keys(family).forEach(key => {
console.log(key);
console.log(family[key]);
});