オブジェクトメソッド
- オブジェクト.キー(obj)
- オブジェクト.値(obj)
- オブジェクト.エントリ(obj)
- Object.hasOwnProperty(prop)
- Object.assign(ターゲット, ソース1, [ソース2, ...])
- オブジェクト.フリーズ(obj)
- オブジェクト.is(obj1, obj2)
- Object.getOwnPropertyDescriptor(obj, prop)
- Object.setPrototypeOf(obj, プロトタイプ)
- Object.create(proto, [propertiesObject])
- Object.fromEntries(反復可能)
- Object.defineProperties(obj, props)
- Object.defineProperty(obj, prop, 記述子)
- Object.getOwnPropertyNames(obj)
- Object.getOwnPropertySymbols(obj)
- Object.isExtensible(obj)
- Object.preventExtensions(obj)
- Object.isSealed(obj)
- オブジェクト.シール(obj)
オブジェクト.キー(obj)
Object.keys(obj):オブジェクトの列挙可能なすべてのプロパティの名前で構成される配列を返します。
const obj = {
a: 1, b: 2, c: 3 };
const keys = Object.keys(obj);
console.log(keys); // ['a', 'b', 'c']
オブジェクト.値(obj)
Object.values(obj):オブジェクトのすべての列挙可能なプロパティの値で構成される配列を返します。
const obj = {
a: 1, b: 2, c: 3 };
const values = Object.values(obj);
console.log(values); // [1, 2, 3]
オブジェクト.エントリ(obj)
Object.entries(obj):オブジェクトの列挙可能なすべてのプロパティのキーと値のペアの配列を返します。
const obj = {
a: 1, b: 2, c: 3 };
const entries = Object.entries(obj);
console.log(entries); // [['a', 1], ['b', 2], ['c', 3]]
Object.hasOwnProperty(prop)
Object.hasOwnProperty(prop):オブジェクトが指定されたプロパティを持つかどうかを判断します。
const obj = {
a: 1, b: 2, c: 3 };
const hasProp = obj.hasOwnProperty('a');
console.log(hasProp); // true
Object.assign(ターゲット, ソース1, [ソース2, …])
Object.assign(target, source1, [source2, …]): 1 つ以上のオブジェクトのプロパティをターゲット オブジェクトにコピーします。
const obj1 = {
a: 1 };
const obj2 = {
b: 2 };
const obj3 = {
c: 3 };
const result = Object.assign(obj1, obj2, obj3);
console.log(result); // { a: 1, b: 2, c: 3 }
オブジェクト.フリーズ(obj)
Object.freeze(obj):属性を追加、削除、または変更できないようにオブジェクトをフリーズします。
const obj = {
a: 1, b: 2 };
Object.freeze(obj);
obj.c = 3; // 添加属性无效
obj.a = 100; // 修改属性无效
delete obj.b; // 删除属性无效
console.log(obj); // { a: 1, b: 2 }
オブジェクト.is(obj1, obj2)
Object.is(obj1, obj2): 2 つの値が厳密に等しいかどうかを判断します。
console.log(Object.is(1, 1)); // true
console.log(Object.is('foo', 'foo')); // true
console.log(Object.is({
}, {
})); // false
console.log(Object.is(+0, -0)); // false
console.log(Object.is(NaN, NaN)); // true
Object.getOwnPropertyDescriptor(obj, prop)
Object.getOwnPropertyDescriptor(obj, prop):指定された property のプロパティ記述子を取得します。
const obj = {
value: 123 };
const descriptor = Object.getOwnPropertyDescriptor(obj, 'value');
console.log(descriptor); // { value: 123, writable: true, enumerable: true, configurable: true }
Object.setPrototypeOf(obj, プロトタイプ)
Object.setPrototypeOf(obj,prototype):オブジェクトのプロトタイプを設定します(つまり、その継承関係を設定します)。
const obj1 = {
};
const obj2 = {
value: 123 };
Object.setPrototypeOf(obj1, obj2);
console.log(obj1.__proto__ === obj2); // true
Object.create(proto, [propertiesObject])
Object.create(proto, [propertiesObject]):指定されたプロトタイプを使用して新しいオブジェクトを作成します。
const obj1 = {
a: 1 };
const obj2 = Object.create(obj1, {
b: {
value: 2 }});
console.log(obj2.a); // 1
console.log(obj2.b); // 2
Object.fromEntries(反復可能)
Object.fromEntries(iterable):反復可能なオブジェクトから新しいオブジェクトを作成します。
const entries = [['a', 1], ['b', 2]];
const obj = Object.fromEntries(entries);
console.log(obj); // { a: 1, b: 2 }
Object.defineProperties(obj, props)
Object.defineProperties(obj, props): 1 つ以上のプロパティの記述子を定義します。
const obj = {
};
Object.defineProperties(obj, {
a: {
value: 1 },
b: {
value: 'hello' }
});
console.log(obj.a); // 1
console.log(obj.b); // 'hello'
Object.defineProperty(obj, prop, 記述子)
Object.defineProperty(obj, prop, descriptor):プロパティ記述子を定義します。
const obj = {
};
Object.defineProperty(obj, 'a', {
value: 123,
writable: false,
enumerable: true,
configurable: false
});
console.log(obj.a); // 123
obj.a = 456; // 不可写,赋值无效
console.log(obj.a); // 123
for (let key in obj) {
console.log(key); } // 可枚举
delete obj.a; // 不可配置,删除无效
console.log(obj.a); // 123
Object.getOwnPropertyNames(obj)
Object.getOwnPropertyNames(obj):オブジェクトのすべてのプロパティ名を返します(シンボルを除く)。
const obj = {
a: 1, b: 2 };
const keys = Object.getOwnPropertyNames(obj);
console.log(keys); // ['a', 'b']
Object.getOwnPropertySymbols(obj)
Object.getOwnPropertySymbols(obj):オブジェクトのすべての Symbol プロパティ名を返します。
const sym = Symbol('key');
const obj = {
a: 1, [sym]: 10 };
const symbols = Object.getOwnPropertySymbols(obj);
console.log(symbols); // [Symbol('key')]
Object.isExtensible(obj)
Object.isExtensible(obj): オブジェクトが拡張可能かどうか (新しいプロパティを追加できるかどうか) を判断します。
const obj1 = {
a: 1 };
const obj2 = {
b: 2 };
console.log(Object.isExtensible(obj1)); // true
Object.preventExtensions(obj1);
console.log(Object.isExtensible(obj1)); // false
console.log(Object.isExtensible(obj2)); // true
Object.preventExtensions(obj)
Object.preventExtensions(obj): オブジェクトが拡張されないようにします (新しいプロパティは追加できません)。
const obj = {
a: 1 };
Object.preventExtensions(obj);
obj.b = 2;
console.log(obj); // { a: 1 }
Object.isSealed(obj)
Object.isSealed(obj): オブジェクトがシールされているかどうかを判断します (これ以上属性を追加または削除できません)。
const obj = Object.freeze({
a: 1 });
console.log(Object.isSealed(obj)); // true
オブジェクト.シール(obj)
Object.seal(obj): オブジェクトが閉じられないようにします (属性の追加または削除はできなくなりますが、属性値は変更できます)。
const obj = {
a: 1 };
Object.seal(obj);
obj.b = 2; // 无法添加新属性
delete obj.a; // 无法删除属性
obj.a = 100; // 可以修改属性值
console.log(obj); // { a: 100 }