当前位置: 首页 > news >正文

14对象的方法

14对象的方法

1.创建数组的方式
const obj = {nickname: '宠儿'};//字面量
const obj_a = new Object({ nikename:'上帝的宠儿'});//构造函数式
const obj_b = Object( {nikename: '耶和华的宠儿'});
2.Object.defineProperty/defineProperties

Object.defineProperty给object定义私有属性

Object.defineProperties同时定义多个私有属性(我们手动给对象添加的属性)

Object.defineProperty(给哪个对象定义属性, ‘属性名是什么’, {属性值的配置})

属性值的配置:

  • value: ‘属性值是什么’,
  • writable: true/false, 是否可写 默认为false
  • ennumerable: true/ fasle, 是否可枚举(遍历) 默认为false
  • configurable: true/ false 是否可改配置 (锁) 默认为false
  • configurable是一把关上就打不开的锁。
    • 锁关上时,如果原来可写,能够改成不可写,如果原来不可写,不能改成可写
const a = { nickname: 'a' };
Object.defineProperty(a, 'age', {
    value: 123
});
a.age = 456;
console.log(a);//{nickname: "a", age: 123}

const b = { nickname: '小明' };
Object.defineProperties( b, {//这个对象的属性名就是b里边私有属性的属性名
        abc: {//abc属性的配置对象
            value: 'abc',
            writable: true
        },
        xyz: {
            value: 'xyz'
        }
} );
console.log(b);//{nickname: "小明", abc: "abc", xyz: "xyz"}
const a = { nickname: 'a' };
Object.defineProperty( a, 'some', {
    value: [1,2,3],
    writable: true,
    enumerable: false,//不可遍历(枚举)
    configurable: true //锁是开着的
} );
a.some = 123;

//如果我们想要改some属性的配置
Object.defineProperty( a, 'some', {//因为some属性已经有了,现在是在改some属性的配置
   enumerable: true,//不可遍历(枚举)
} );
3.Object.getOwnPropertyDescriptor/getOwnPropertyDescriptors

查看对象里某个私有属性的具体配置 / 查看所有私有属性的配置对象

  • Object.getOwnPropertyDescriptor(哪个对象,“哪个私有属性”)
  • Object.getOwnPropertyDescriptor(哪个对象)–>此时会undefined
    • 查看时,若该对象没有那个属性,返回undefined
  • Object.getOwnPropertyDescriptors(哪个对象)
let obj = {
        nickname: 'xiaoming',
        age:13
}
Object.defineProperty(obj, 'des', {
        value:34
})
console.log(obj);//{nickname: "xiaoming", age: 13, des: 34}
console.log( Object.getOwnPropertyDescriptor(obj,'des') );
//{value: 34, writable: false, enumerable: false, configurable: false}
console.log( Object.getOwnPropertyDescriptor(obj) );//undefined
console.log( Object.getOwnPropertyDescriptors(obj) );
//nickname: {…}, age: {…}, des: {…}}
4.hasOwnProperty()

判断对象身上是否有某个私有属性 返回true或者false

Object.hasOwnProperty('属性名')

 const obj4 = { nickname: '小明',age: 3, hobbies: ['sing', 'jump', 'rap', 'basketball'] };
Object.defineProperty( obj4, 'sex', {
        value: 'boy'
} );
console.log( 'obj4', obj4);
console.log( obj4.hasOwnProperty('nickname') );//true
console.log( obj4.hasOwnProperty('sex') );//true 
console.log( obj4.hasOwnProperty('aaa') );//fasle
console.log( obj4.hasOwnProperty('toString') );//fasle
5.in

判断对象身上是否有某个属性(公有属性和私有属性)

const obj4 = { nickname: '小明',age: 3, hobbies: ['sing', 'jump', 'rap', 'basketball'] };
console.log( obj4.hasOwnProperty('toString') );//fasle
console.log( 'toString' in obj4 );//true
6.Object.freeze()

冻结一个对象 -> 不能添加新的属性,不能修改原来属性的值,也不能更改原来属性的配置,只要被冻住就不能解冻

const obj3 = { nickname: '小刚' };
Object.freeze(obj3);
console.log(obj3);
obj3.nickname = 3;//无效
delete obj3.nickname;//无效
console.log(obj3);
7.Object.isFrozen()

查看对象是否被冻结,返回false或true

console.log( Object.isFrozen(obj3) );
8.Object.seal

密封—>把对象的所有属性的锁都给锁上,不能添加新的属性

const obj1 = { nickname: '小明' };
Object.seal( obj1 );
9.Object.isSealed

查看对象是否被密封

console.log( Object.isSealed(obj1) );
10.Object.entries()

获取所有可枚举属性的键值对数组 Object.entries(对象)

const obj4 = { nickname: '小明',age = 3 };
Object.defineProperty( obj4, 'sex', {
    value: 'boy'
} );
let result = Object.entries(obj4)//[Array(2), Array(2)] 获取不到sex
11.Object.fromEntries()

把键值对格式的数组转化为一个对象 Object.fromEntries(键值对格式数组)

const abc = Object.fromEntries(result);
console.log( 'abc', abc);
12.Object.assign()

拷贝别的对象身上的属性 Object.assign(obj1, obj2,obj3...)把对象2,3…里边的属性合并到1

const obj5 = { nickname: '小明', sex: 'girl' },
     obj6 = {
            sex: 'boy', 
            hobbies: ['sing', 'jump', 'rap', 'basketball'],
            sayName: function(){
                console.log(this.nickname)
            }
        },
     obj7 = { sex: 'girl' };
Object.assign(obj5, obj6, obj7);
console.log(obj5);

相关文章:

  • 神经网络原理与实例精解,神经网络案例讲解范文
  • 【dfs爆搜】poj 1129 Channel Allocation
  • 244页14万字XX智能交通系统设计方案
  • 9月24日计算机视觉基础学习笔记——经典机器学习_02
  • Java编程之语法结构
  • springboot-webFlux的webclient详细使用介绍,细节拉满
  • 分布式主键生成设计策略
  • getch()与_getch()、不能将const char*类型的值分配到const* 类型的实体
  • java-php-python-ssmC语言教学辅导网站计算机毕业设计
  • nacos1.4.2
  • 绝了,Gooey:一行代码将 Python 程序转换为图形界面应用
  • matlab系统辨识工具箱原理,matlab常用工具箱介绍
  • 深度学习目标跟踪相关细节-毕设
  • JVM基础:什么是STW?
  • Teams Bot App 初探
  • 230. Kth Smallest Element in a BST
  • Android框架之Volley
  • Apache Zeppelin在Apache Trafodion上的可视化
  • iOS编译提示和导航提示
  • java概述
  • Linux gpio口使用方法
  • nginx 配置多 域名 + 多 https
  • Python学习之路13-记分
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 高度不固定时垂直居中
  • 关于字符编码你应该知道的事情
  • 技术:超级实用的电脑小技巧
  • 数据可视化之 Sankey 桑基图的实现
  • 智能合约开发环境搭建及Hello World合约
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (C语言)共用体union的用法举例
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (zt)最盛行的警世狂言(爆笑)
  • (二)c52学习之旅-简单了解单片机
  • (分布式缓存)Redis分片集群
  • (新)网络工程师考点串讲与真题详解
  • (转)jdk与jre的区别
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .jks文件(JAVA KeyStore)
  • .net core 6 redis操作类
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .skip() 和 .only() 的使用
  • ;号自动换行
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • [C++]打开新世界的大门之C++入门
  • [CUDA手搓]从零开始用C++ CUDA搭建一个卷积神经网络(LeNet),了解神经网络各个层背后算法原理
  • [ESP32 IDF]web server
  • [HUBUCTF 2022 新生赛]
  • [LeeCode]—Wildcard Matching 通配符匹配问题
  • [one_demo_5]命令行输入输出