HarmonyOs DevEco Studio小技巧22--Object的用法
对象属性获取。
目录
Object.assign(target,...sources): 用于将源对象的可枚举属性复制到目标对象,并返回目标对象。
Object.create(proto, [propertiesObject]) (不太常用):使用指定的原型对象和属性创建一个新对象。
Object.fromEntries(iterable) (不太常用):把键值对列表转换为对象。
Object.defineProperties(obj, properties) (不太常用):直接在一个对象上定义新的属性或修改现有属性的特性。
Object.defineProperty(obj, prop, descriptor) (不太常用):为对象定义单个属性,并可以指定属性的特性,如可写、可枚举、可配置等。
Object.entries(obj):返回一个给定对象自身可枚举属性的键值对数组。
Object.getOwnPropertyDescriptor(obj, prop) (不太常用):返回指定对象的自有属性描述符。
Object.getOwnPropertyNames(obj):返回一个数组,包含对象自身的所有属性名(包括不可枚举属性)。
Object.getOwnPropertySymbols(obj) (不太常用):返回一个数组,包含对象自身的所有 Symbol 属性名。
Object.getPrototypeOf(obj):返回指定对象的原型。
Object.keys(obj):返回一个数组,包含对象自身的可枚举属性名。
Object.values(obj):返回一个数组,包含对象自身的可枚举属性值。
Object.freeze(obj) (不太常用):冻结一个对象,使其属性不可修改、添加或删除。
Object.preventExtensions(obj) (不太常用):防止对象添加新属性。
Object.seal(obj) (不太常用):密封一个对象,使其现有属性不可配置,但属性仍然可写。
Object.is(obj1, obj2):比较两个值是否严格相等。
Object.hasOwnProperty(prop):检查对象自身是否具有指定的属性。
Object.isExtensible(obj) (不太常用):确定对象是否是可扩展的(即是否可以添加新属性)。
Object.toLocaleString() (不太常用):返回对象的本地化字符串表示。
对象创建与复制:
-
Object.assign(target,...sources): 用于将源对象的可枚举属性复制到目标对象,并返回目标对象。
let target = { name: 'Alice' };
let source = { age: 25 };
let result = Object.assign(target, source);
console.log(result);
-
Object.create(proto, [propertiesObject])(不太常用):使用指定的原型对象和属性创建一个新对象。
let proto = { method: function() { console.log('Method in proto'); } };
let obj = Object.create(proto, { property: { value: 42 } });
obj.method();
-
Object.fromEntries(iterable)(不太常用):把键值对列表转换为对象。
let entries = [['name', 'Bob'], ['age', 30]];
let obj = Object.fromEntries(entries);
console.log(obj);
对象属性定义与操作:
-
Object.defineProperties(obj, properties)(不太常用):直接在一个对象上定义新的属性或修改现有属性的特性。
let obj = {};
Object.defineProperties(obj, {
name: {
value: 'John',
writable: true
},
age: {
value: 35,
writable: false
}
});
-
Object.defineProperty(obj, prop, descriptor)(不太常用):为对象定义单个属性,并可以指定属性的特性,如可写、可枚举、可配置等。
let obj = {};
Object.defineProperty(obj, 'property', {
value: 42,
writable: false
});
对象属性获取:
-
Object.entries(obj):返回一个给定对象自身可枚举属性的键值对数组。
let obj = { name: 'Alice', age: 25 };
let entries = Object.entries(obj);
console.log(entries);
-
Object.getOwnPropertyDescriptor(obj, prop)(不太常用):返回指定对象的自有属性描述符。
let obj = { property: 42 };
let descriptor = Object.getOwnPropertyDescriptor(obj, 'property');
console.log(descriptor);
-
Object.getOwnPropertyNames(obj):返回一个数组,包含对象自身的所有属性名(包括不可枚举属性)。
let obj = { name: 'Alice', age: 25 };
let names = Object.getOwnPropertyNames(obj);
console.log(names);
-
Object.getOwnPropertySymbols(obj)(不太常用):返回一个数组,包含对象自身的所有 Symbol 属性名。
let sym = Symbol('mySymbol');
let obj = { [sym]: 'Symbol Value' };
let symbols = Object.getOwnPropertySymbols(obj);
console.log(symbols);
-
Object.getPrototypeOf(obj):返回指定对象的原型。
let obj = {};
let proto = Object.getPrototypeOf(obj);
console.log(proto);
-
Object.keys(obj):返回一个数组,包含对象自身的可枚举属性名。
let obj = { name: 'Alice', age: 25 };
let keys = Object.keys(obj);
console.log(keys);
-
Object.values(obj):返回一个数组,包含对象自身的可枚举属性值。
let obj = { name: 'Alice', age: 25 };
let values = Object.values(obj);
console.log(values);
对象状态与特性:
-
Object.freeze(obj)(不太常用):冻结一个对象,使其属性不可修改、添加或删除。
let obj = { name: 'Alice' };
Object.freeze(obj);
obj.name = 'Bob';
-
Object.preventExtensions(obj)(不太常用):防止对象添加新属性。
let obj = { name: 'Alice' };
Object.preventExtensions(obj);
obj.age = 25;
-
Object.seal(obj)(不太常用):密封一个对象,使其现有属性不可配置,但属性仍然可写。
let obj = { name: 'Alice' };
Object.seal(obj);
delete obj.name;
对象比较与检测:
-
Object.is(obj1, obj2):比较两个值是否严格相等。
let num1 = +0;
let num2 = -0;
console.log(Object.is(num1, num2));
-
Object.hasOwnProperty(prop):检查对象自身是否具有指定的属性。
let obj = { name: 'Alice' };
console.log(obj.hasOwnProperty('name'));
-
Object.isExtensible(obj)(不太常用):确定对象是否是可扩展的(即是否可以添加新属性)。
let obj = {};
console.log(Object.isExtensible(obj));
对象的字符串表示:
-
Object.toLocaleString()(不太常用):返回对象的本地化字符串表示。
let date = new Date();
console.log(date.toLocaleString());
-
Object.toString(): 返回对象的字符串表示。通常默认的Object.prototype.toString()方法返回的字符串格式为[object Type],其中Type是对象的类型。
let obj = {};
console.log(obj.toString()); 更多推荐
所有评论(0)