1、 Object.is()
Object.is() 是一種判斷兩個值是否相同的方法。
文法:Object.is(value1, value2);
參數:
value1:要比較的第一個值。
value2:要比較的第二個值。
傳回值:一個布爾表達式,訓示兩個參數是否具有相同的值。
例子:
// Case 1: Evaluation result is the same as using '==='
Object.is(25, 25); // true
Object.is('foo', 'bar'); // false
Object.is(foo, foo); // true
// Case 2: Signed zero
Object.is(0, -0); // false
Object.is(0n, -0n); // true
// Case 3: NaN
Object.is(NaN, 0/0); // true
Object.is(NaN, Number.NaN) // true
2、Object.assign()
Object.assign() 方法用于将所有可枚舉的自身屬性從一個或多個源對象複制到目标對象。
文法:Object.assign(target, ...sources)
target:目标對象——應用源屬性的對象,修改後傳回。
sources:源對象——包含你要應用的屬性的對象。
傳回值:修改後的目标對象。
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = Object.assign(target, source);
console.log(target);
// expected output: Object { a: 1, b: 4, c: 5 }
console.log(returnedTarget);
// expected output: Object { a: 1, b: 4, c: 5 }
注意:如果源對象中的屬性具有相同的鍵,則目标對象中的屬性會被源中的屬性覆寫。較晚來源的屬性會覆寫較早來源的屬性。
3、Object.entries()
Object.entries() 方法傳回給定對象自己的可枚舉字元串鍵屬性 [key, value] 對的數組。
它類似于使用 for...in 循環進行疊代,除了 for...in 循環還會枚舉原型鍊中的屬性。屬性的順序與通過手動循環對象的屬性值給出的順序相同。
文法:Object.entries(obj)
obj:要傳回其自己的可枚舉字元串鍵屬性 [key, value] 對的對象。
傳回值:給定對象自己的可枚舉字元串鍵屬性 [key, value] 對的數組。
例子:
const object1 = {name: "David", age: 23};
for (const [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
}
// "name: David"
// "age: 23"
4、Object.values()
Object.values() 方法傳回給定對象自己的可枚舉屬性值的數組,其順序與 for...in 循環提供的順序相同。
文法:Object.values(obj)
obj:要傳回其可枚舉自身屬性值的對象。
傳回值:包含給定對象自己的可枚舉屬性值的數組。
const object1 = {
a: 'somestring',
b: 42,
c: false
};
console.log(Object.values(object1));
// expected output: Array ["somestring", 42, false]
5、Object.prototype.hasOwnProperty()
hasOwnProperty() 方法傳回一個布爾值,訓示對象是否具有指定的屬性作為它自己的屬性。
如果指定的屬性是對象的直接屬性,則該方法傳回 true — 即使值為 null 或未定義。如果該屬性是繼承的或根本沒有聲明,則傳回 false。
文法:hasOwnProperty(prop)
參數
prop:要測試的屬性的字元串名稱或符号。
傳回值:如果對象将指定的屬性作為自己的屬性,則傳回true;否則為false。
const object1 = {};
object1.property1 = 42;
console.log(object1.hasOwnProperty('property1'));
// expected output: true
console.log(object1.hasOwnProperty('toString'));
// expected output: false
console.log(object1.hasOwnProperty('hasOwnProperty'));
// expected output: false
6、Object.keys()
Object.keys() 方法用于傳回給定對象自己的可枚舉屬性名稱的數組,以與普通循環相同的順序疊代。
文法:Object.keys(obj)
obj:要傳回可枚舉自身屬性的對象。
傳回值:表示給定對象的所有可枚舉屬性的字元串數組。
const object1 = {
a: 'somestring',
b: 42,
c: false
};
console.log(Object.keys(object1));
// expected output: Array ["a", "b", "c"]
7、 Object.prototype.toString()
toString() 方法傳回一個表示對象的字元串。當對象将被表示為文本值或以期望字元串的方式引用對象時,将自動調用此方法 id。預設情況下,toString() 方法由從 Object 繼承的每個對象繼承。
文法:toString()
傳回值:表示對象的字元串。
function Dog(name) {
this.name = name;
}
const dog1 = new Dog('Gabby');
Dog.prototype.toString = function dogToString() {
return `${this.name}`;
};
console.log(dog1.toString());
// expected output: "Gabby"
注意:對于 Numbers 和 Big Ints,toString() 采用可選參數 radix,其值必須最小為 2,最大為 36。
8、Object.freeze()
Object.freeze() 方法當機一個對象,這意味着它不能再被更改。當機對象可防止向其添加新屬性,防止删除現有屬性,防止更改現有屬性的可枚舉性、可配置性或可寫性,并防止更改現有屬性的值。它還可以防止其原型被更改。
文法:Object.freeze(obj)
obj:要當機的對象。
傳回值:傳遞給函數的對象。
const obj = {
prop: 42
};
Object.freeze(obj);
obj.prop = 33;
// Throws an error in strict modeconsole.log(obj.prop);// expected output: 42