对象方法主要用于创建对象、修改或查询对象的属性名和属性值,帮助开发者高效地操作对象。
Object.create()
描述:Object.create()
方法用于创建一个新对象,使用现有的对象作为新创建对象的原型。
const person = {
greet() {
console.log('Hello!');
}
};
const john = Object.create(person);
john.greet(); // Hello!
Object.assign(target, ...sources)
描述:Object.assign()
方法将一个或多个源对象复制到目标对象中,并返回目标对象。常用于对象的浅拷贝或将多个对象合并到一个对象中。
const target = { name: 'John' };
const source = { age: 30, job: 'Developer' };
const result = Object.assign(target, source);
console.log(result); // { name: "John", age: 30, job: "Developer" }
Object.keys(obj)
描述:Object.keys()
把对象的属性名组成一个数组并返回;
示例:
const person = {
name: 'John',
age: 30
};
const keys = Object.keys(person);
console.log(keys); // ["name", "age"]
Object.values(obj)
描述:Object.values()
把对象的属性值组成一个数组并返回;
示例:
const person = {
name: 'John',
age: 30
};
const values = Object.values(person);
console.log(values); // ["John", 30]
Object.entries(obj)
描述:Object.entries()
方法返回一个二维数组,数组的每个元素是一个存储键值对 [key, value]
的数组
示例:
const person = {
name: 'John',
age: 30
};
const entries = Object.entries(person);
console.log(entries); // [["name", "John"], ["age", 30]]
Object.defineProperty(obj, prop, descriptor)
描述:Object.defineProperty()
方法可以在一个对象上定义一个新属性,或者修改现有属性的特性,并返回该对象。
示例:
const obj = {};
Object.defineProperty(obj, 'a', {
value: 1,
writable: true,
enumerable: true,
configurable: true
});
console.log(obj.a); // 1
Object.hasOwnProperty(prop)
描述:Object.hasOwnProperty()
方法用于判断对象自身是否具有指定的属性,返回布尔值 true
或 false
。
示例:
const obj = { a: 1 };
console.log(obj.hasOwnProperty('a')); // true
console.log(obj.hasOwnProperty('b')); // false
Proxy
描述:Proxy
是一种用于创建对象代理的机制,代理对象后拦截并自定义对象的基本操作(如属性访问、赋值、函数调用等;
示例:
javascript
复制代码
const target = {};
const handler = {
set: function(target, prop, value, receiver) {
if (typeof value === 'number') {
target[prop] = value;
return true;
} else {
console.log("Property value must be a number.");
return false;
}
}
};
const proxy = new Proxy(target, handler);
proxy.age = 30; // 正常赋值
proxy.age = "thirty"; // 控制台输出 "Property value must be a number."