如何有效操作和管理对象object_Object?

2024-08-05 0 423

console.log(d2)//{ configurable: true, enumerable: false, value: 8675309, wriTable: false }b).Object.defineProperty() 该方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象。    参数:     obj 需要添加新属性的对象     prop 要修改或创建的属性的名称     descrIPtor 将被定义或修改的描述符对象 let o = {};

如何有效操作和管理对象object_Object?
图片来源网络,侵删)

let d = Object.getOwnPropertydescriptor(o, “foo”);

let o1 = { bar: 42 };

let d1 = Object.getOwnPropertyDescriptor(o1, “bar”);

let o2 = {};

Object.defineProperty(o2, “baz”, {

value: 8675309,

writable: false,

如何有效操作和管理对象object_Object?
图片来源网络,侵删)

enumerable: false

});

let d2 = Object.getOwnPropertyDescriptor(o2, “baz”);

console.log(d)// undefined

console.log(d1)//{configurable: true, enumerable: true, value: 42, writable: true}

console.log(d2)//{ configurable: true, enumerable: false, value: 8675309, writable: false }c).Object.defineProperties() 这个方法可以同时定义多个属性。    参数:     obj 需要添加新属性的对象     proPS 包含定义的属性描述符对象的对象 let o = {};

let descs = {

如何有效操作和管理对象object_Object?
(图片来源网络,侵删)

foo: { value: 1, writable: false },

bar: { value: 2, writable: true }

};

Object.defineProperties(o, descs);

console.log(o.foo); // 1

console.log(o.bar); // 2

console.log(Object.getOwnPropertyDescriptor(o, “foo”)); // {value: 1, writable: false, enumerable: true, configurable: true}

console.log(Object.getOwnPropertyDescriptor(o, “bar”)); // {value: 2, writable: true, enumerable: true, configurable: true}d).Object.getOwnPropertyDescriptors() 这个方法返回指定对象所有自身(非继承)属性的属性描述符的拷贝。    参数:     obj 需要获取其所有属性描述符的对象 let o = {

foo: { value: 1, writable: false },

bar: { value: 2, writable: true }

};

let descs = Object.getOwnPropertyDescriptors(o);

console.log(descs); // {foo: {…}, bar: {…}}

console.log(Object.getOwnPropertyDescriptor(descs, “foo”)); // {value: 1, writable: false, enumerable: true, configurable: true}

console.log(Object.getOwnPropertyDescriptor(descs, “bar”)); // {value: 2, writable: true, enumerable: true, configurable: true}e).Object.create() 创建一个新对象,可以选择性地将现有值添加到新创建的对象中。    参数:     proto 新创建对象的原型     propertiesObject 一个可选参数,如果提供,它应该是一个包含一组属性的字典。 let o = Object.create({x:1,y:2}, { getFoo: { value: function() { return this.x + this.y; } } });

console.log(o.getFoo()); // 3

摘要JavaScript中的对象操作是编程的基础,包括创建、访问、修改和删除对象及其属性,以及对象的枚举和作为函数参数等操作。

JavaScript中,对象操作是一个非常重要的概念,因为几乎所有的操作都与对象有关,本文将详细介绍如何对JavaScript对象进行各种操作,从对象的创建到属性的访问、修改、删除,以及对象的枚举和作为函数参数的使用等。

创建对象并添加属性

在JavaScript中,有多种方式可以创建对象,其中最常见的方法是使用对象字面量和构造函数,对象字面量是一种简洁的语法,可以直接定义一个对象的结构并初始化它的属性。

const obj = {
    uname: 'dengke',
    fn: function() {
        console.log('ggg');
    }
};

可以使用Object.create()方法创建一个新对象,并将现有值添加到新创建的对象中,创建一个以另一个空对象为原型,并拥有一个属性p的对象:

var o = Object.create({}, { p: { value: 42 } });

有时可能需要浅拷贝一个已存在的对象,这时,Object.assign()方法非常有用,它可以用于复制对象,也可以用于合并多个对象的属性到一个新的对象中。

var o1 = { a: 1 };
var o2 = { b: 2 };
var o3 = { c: 3 };
var obj = Object.assign({}, o1, o2, o3); // { a: 1, b: 2, c: 3 }

需要注意的是,Object.assign()不会拷贝对象的继承属性和不可枚举属性。

访问和修改对象属性

访问对象属性通常有两种方式:点表示法和方括号表示法,这两种方式都可以用来访问对象的属性,但方括号还可以用于访问属性名包含特殊字符或空格的情况。

const obj = {
    info: 'wakaka',
    inner: {
        a: 10,
        b: 20
    }
};
console.log(obj.info); // wakaka
console.log(obj['inner']); // {a: 10, b: 20}

当试图访问一个不存在的属性时,为了避免错误,可以使用逻辑运算符||来指定默认值,或使用可选链式操作符?.来避免报错并返回undefined

console.log(obj.age || 18); // 18
let a = obj.name?.toUpperCase(); // undefined

修改对象属性的值也是常见的操作,可以直接通过赋值来完成。

obj.uname = 'new name';

使用Object.defineProperty()可以更细粒度地控制属性的特性,如是否可写、可枚举等。

let o = {};
Object.defineProperty(o, 'baz', {
    value: 8675309,
    writable: false,
    enumerable: false
});

删除对象属性

在某些情况下,可能需要从对象中删除某个属性,这可以通过delete操作符来实现。

const o = {
    p: 10,
    m: 20
};
delete o.p;
console.log(o); // { m: 20 }

删除对象的属性后,再次访问该属性将返回undefined

对象作为函数参数

对象经常作为函数参数传递,这使得函数可以处理复杂的数据结构,可以创建一个接收对象作为参数的函数,然后访问或修改这些对象的属性。

const displayPerson = (person) => {
    console.log(name: ${person.name || '无名氏'}); console.log(age: ${person['age'] || 0}); }; displayPerson({ name: 'dengke', age: 18 }); // name: dengke // age: 18

这种方式在处理用户输入、配置文件或其他结构化数据时尤为有用。

枚举对象的属性

有时需要遍历对象的所有属性,在JavaScript中,可以使用for...in循环、Object.keys()Object.getOwnPropertyNames()方法来枚举对象的属性。

const obj = {
    foo: 'bar',
    baz: 42
};
for (let prop in obj) {
    console.log(prop); // 输出属性名
}
console.log(Object.keys(obj)); // ['foo', 'baz'],只返回可枚举的自有属性
console.log(Object.getOwnPropertyNames(obj)); // ['foo', 'baz'],返回所有自有属性,无论是否可枚举

for...in循环可以枚举对象自身的和继承的属性,而Object.keys()只返回对象自身的可枚举属性。Object.getOwnPropertyNames()则返回对象自身的所有属性,包括不可枚举的。

JavaScript对象操作涵盖了从创建、访问、修改、删除到枚举对象属性的各种方面,掌握这些操作对于编写有效的JavaScript代码至关重要,每种操作都有其适用场景,合理使用可以大大提高代码的效率和可读性。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

免责声明
1. 本站所有资源来源于用户上传和网络等,如有侵权请邮件联系本站整改team@lcwl.fun!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系本站工作人员处理!
6. 本站资源售价或VIP只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 因人力时间成本问题,部分源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
9.本站所有源码资源都是经过本站工作人员人工亲测可搭建的,保证每个源码都可以正常搭建,但不保证源码内功能都完全可用,源码属于可复制的产品,无任何理由退款!

网站搭建学习网 技术教程 如何有效操作和管理对象object_Object? https://www.xuezuoweb.com/8789.html

常见问题
  • 本站所有的源码都是经过平台人工部署搭建测试过可用的
查看详情
  • 购买源码资源时购买了带主机的套餐是指可以享受源码和所选套餐型号的主机两个产品,在本站套餐里开通主机可享优惠,最高免费使用主机
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

Fa快捷助手
手机编程软件开发

在手机上用手点一点就能轻松做软件

去做软件
链未云主机
免备案香港云主机

开通主机就送域名的免备案香港云主机

去使用
链未云服务器
免备案香港云服务器

支持售后、超低价、稳定的免备案香港云服务器

去使用