js-对象

举报
林太白 发表于 2025/06/30 17:51:07 2025/06/30
【摘要】 js-对象

js-Object

对象 (Object) 是Javascript之中键值对的集合,常用于存储和操作数据。

Object.keys()

作用:以数组形式返回对象的所有键 (属性名)

const person = { name: "name属性值", age: 30, city: "city属性值" };
const keys=Object.keys(person);
console.log(keys,'keys');  //["name", "age", "city"]

Object.values()

作用:以数组形式返回返回对象的所有值

  const person = { name: "name属性值", age: 30, city: "city属性值" };
  const keys=Object.values(person);
  console.log(keys,'values'); //["name属性值", 30, "city属性值"]

Object.entries()

功能:返回一个对象中每个元素是一个 [key,value] 数组,表示对象的每个键值对。

示例:

const person = { name: "name属性值", age: 30, city: "city属性值" };
const keys=Object.entries(person);
console.log(keys,'entries'); 
//输出:[[ 'name', 'name属性值' ], [ 'age', 30 ], [ 'city', 'city属性值' ]]

Object.assign()

功能:将源对象(一个或者多个)的所有可枚举属性复制到目标对象中,并返回目标对象。

示例:

const a = { a: 1, b: 2 };
const b = { b: 4, c: 5 };
const newTarget = Object.assign({},a, b);
console.log(a,'aaaa'); //输出 { a: 1, b: 2 }
console.log(newTarget); //输出  { a: 1, b: 4, c: 5 }


// 如果我们想要拷贝进原来的对象之中
const a = { a: 1, b: 2 };
const b = { b: 4, c: 5 };
const newTarget = Object.assign(a, b);
console.log(a,'aaaa'); //输出  { a: 1, b: 4, c: 5 }
console.log(newTarget); //输出  { a: 1, b: 4, c: 5 }

Object.freeze()

功能:冻结一个对象,使其不能被修改,即不能添加新的属性,不能删除已有属性,不能修改已有属性的值。

示例:

const obj = { name: "John", age: 30 };
console.log(obj,'obj-未修改'); // { name: 'John', age: 30 }
Object.freeze(obj);
obj.age = 31; // 修改属性值无效
console.log(obj,'obj-修改'); // { name: 'John', age: 30 }

Object.seal()

功能:封闭对象,禁止添加或删除属性,但可以修改已有属性的值

示例:

const obj = { name: "John", age: 30 };
console.log(obj,'obj-未修改'); // { name: 'John', age: 30 }
obj.sex = 1; // 修改属性值有效
obj.age = 31;
console.log(obj,'obj-修改1'); // { name: 'John', age: 30, sex: 1 }
Object.seal(obj);
obj.aihao = '唱歌'; // 修改属性值无效
obj.age = 32; // 修改属性值有效
console.log(obj,'obj-修改2-禁止删除或者添加已经有的属性'); 
// 输出 { name: 'John', age: 32, sex: 1 }

Object.create()

功能:使用指定的原型对象和可选的属性创建一个新对象。

const person = { name: "John", age: 30 };
const employee = Object.create(person);
employee.job = "Developer";
console.log(employee.name); // "John" (继承自 person)
console.log(employee.job);  // "Developer"

Object.hasOwnProperty()

功能:检查对象是否具有指定的属性(不是继承自原型链)。

const person = { name: "张三", age: 30 };
console.log(person.hasOwnProperty("name"),'name属性'); // 输出 true name属性
console.log(person.hasOwnProperty("city"),'city属性'); // false city属性

Object.getOwnPropertyNames()

功能:返回对象的所有属性名(包括不可枚举的属性)。

const person = { name: "John", age: 30 };
Object.defineProperty(person, "city", {
  value: "城市新值",
  enumerable: false, // 不可枚举
});
const propertyNames = Object.getOwnPropertyNames(person);
console.log(propertyNames); // ["name", "age", "city"]
// 下面的可以在文章之中找到

configurable (可配置性)

enumerable (可枚举性)

writable (可写性)

value (属性值)

Object.getOwnPropertyDescriptor()

功能:返回对象指定属性的描述符。

const person = { name: "John", age: 30 };
const descriptor = Object.getOwnPropertyDescriptor(person, "name");
console.log(descriptor); 
// { value: "John", writable: true, enumerable: true, configurable: true }

Object.defineProperty()

功能:在对象上定义新属性或修改现有属性,并可以设置该属性的描述符。

比较热门的框架vue2 里面的ref的参数,其实就是用这个实现的。

//默认情况是允许修改的
const person = { name: "name未修改", age: 30, city: "city属性值" };
console.log(person.name, '修改以前'); //输出 name未修改
Object.defineProperty(person, "name", {
    value: "name已修改",
})
console.log(person.name, '修改以后'); //输出 name已修改
 


//不允许修改的时候
const person = {};
Object.defineProperty(person, "name", {
  value: "John",
  writable: false,  // 不可修改
});
console.log(person.name); // "John"
person.name = "Alice"; // 无效
console.log(person.name); // "John"

Object.getPrototypeOf()

功能:返回对象的原型。

const person = { name: "John" };
const prototype = Object.getPrototypeOf(person);
console.log(prototype); // Object.prototype

Object.setPrototypeOf()

功能:设置对象的原型。

const person = { name: "John" };
const newPrototype = { greet: function() { console.log("Hello!"); } };
Object.setPrototypeOf(person, newPrototype);
person.greet(); // "Hello!"

补充

对象的原型(即对象的 [[Prototype]]

Object.is()

功能:判断两个值是否严格相等。

console.log(Object.is(25, 25)); // true
console.log(Object.is(NaN, NaN)); // true (不同于 ===)
console.log(Object.is(0, -0)); // false (不同于 ===)

Object.prototype.toString()

功能:返回对象的字符串表示,常用于类型判断。

const person = { name: "John" };
console.log(person.toString()); // "[object Object]"
console.log(Object.prototype.toString.call([])); // "[object Array]"
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。