Js中Object方法

2023-11-14

1.Object.assign()
Object.assign()是通过复制一个或多个对象,创建一个新对象。

var source1 = { a: 1 }; 
var source2 = { b: 2 };

Object.assign(source1,source2);
//  {a: 1, b: 2}

注:
1.如果目标对象和源对象有同名属性,或多个源对象有同名属性,后面的属性会覆盖前面的属性。
2.如果只有一个参数,Object.assign会直接返回该参数。

var source1 = { a: 1, b: 2 };
 var source2 = { b: 3, a: 4 };
Object.assign(source1, source2);
// { a: 4, b: 3}

var obj = {a: 1};  
Object.assign(obj) === obj 
//  true  

2.Object.keys()
Object.keys()传入一个对象,返回的是一个数组,数组中是这个对象的所有属性名称。

var source1 = { a: 1, b: 2 };
Object.keys(source1)
//  ['a', 'b']

3.Object.values()
Object.values()方法也是返回一个数组,数组中是传入对象的键值。

var source1 = { a: 1, b: 2 };
Object.values(source1)
//  [1,2 ]

注:如果传入的参数是一个字符串,会返回各个字符组成的数组。

Object.values('ABC')
// ['A', 'B', 'C']

4.Object.is()
Object.is()判断两个值是否相同,返回true或false。

Object.is(1, 1)  // true
Object.is('1',1)  //  false

//注该函数与==运算符不同,不会强制转换任何类型

Object.is(+0, -0)  // false
Object.is(NaN, NaN)  // true
Object.is(NaN, 0/0)  // true

5.Object.entries()
Object.entries()传入一个对象,返回一个由对象自身可枚举属性的键值对数组。

var source1 = { a: 1, b: 2 };
 Object.entries(source1)
 
 // [['a', 1], ['b', 2] ]

6.Object.freeze()
Object.freeze()方法,冻结一个对象,不能对这个对象增删改。

const obj = { a: 1, b: { c: 2 }};
console.log(obj.a)    // 1
console.log(obj.b.c)  // 2

obj.a = 3
obj.b.c = 4
console.log(obj.a)    // 3
console.log(obj.b.c)  // 4

//Oject.isFrozen: 判断一个对象是否已经被冻结
Object.isFrozen(obj)  // false
Object.freeze(obj)

Object.isFrozen(obj)  // true
obj.a = 5
obj.b.c = 6
console.log(obj.a)    // 3
//Object.freeze()方法只能冻结一层
console.log(obj.b.c)  // 6

7.Object.defineProperty()
Object.defineProperty()方法,定义或修改一个对象中的属性

const obj = new Object()
Object.defineProperty(obj, 'name', {
  configurable: false,
  writable: false,
  enumerable: true,
  value: '一个不能被修改的名字'})
console.log(obj.name) // '一个不能被修改的名字'

**8.Object.defineProperties() **
Object.defineProperties()方法,定义或修改一个对象中的多个属性

const obj2 = new Object()
Object.defineProperties(obj2, {
  name: {
    writable: true,
    value: '张三'
  },
  Name: {
    get: function() {
      return `${this.name}先生`
    },
    set: function(value) {
      this.name = value || '未知'
    }
  }})
console.log(obj2.name)  // 张三
console.log(obj2.Name)  // 张三先生

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Js中Object方法 的相关文章

随机推荐

  • JavaScript离线手册 w3c(w3school) 百度网盘

    听尚硅谷李超老师课 感觉离线文档特别实在 JavaScript w3school 离线分享 baidu wangpan 链接 https pan baidu com s 1AwMZy2MpvxzBtePtDp39nQ pwd imle 提取
  • 【Zabbix实战之部署篇】Zabbix监控windows系统配置方法

    Zabbix实战之部署篇 Zabbix监控windows系统配置方法 一 检查Zabbix监控平台状态 1 检查Zabbix各组件状态 2 检查Zabbix的首页 二 下载windows代理 1 访问Zabbix官网下载界面 2 查看下载安
  • Redis 分布式集群搭建

    转 https blog csdn net daybreak1209 article details 51493265 在Redis的安装和部署 Linux 一文中详细介绍了在Linux环境中搭建Redis服务 本文将介绍关于Redis分布
  • python如何不生成pyc文件(三种方式)

    python如何不生成pyc文件 三种方式 当 import导入另一个模块的时候会生成pyc文件 python3会生成 pycache 如何不生成编译文件呢 1 使用 B参数 即 python3 B test py 里面的包含的就不会生成p
  • 最强自动化测试框架Playwright(4)-控件操作

    文本输入 适用于input textarea 其他可编辑内容的元素 Text input page get by role textbox fill Peter Date input page get by label Birth date
  • 使用MATLAB的trainNetwork设计一个简单的LSTM神经网络

    文章目录 前言 一 数据集 二 网络结构 三 测试程序 前言 借助MATLAB的deepNetworkDesigner搭一个简单的LSTM 数据集使用mnist手写数字识别数据集 一 数据集 mnist数据集包括60000组训练数据和对应的
  • 一个华科研究生导师的肺腑之言(主要适用于理工科)

    各位科研同志们看看吧 仁者见仁智者见智 总归有点用 人太多 不一一 啦 1 作为你们的老师 我现在每周工作60小时 踏踏实实的60小时 阅读 实践 思考 讨论和请教 周而复始 其实这还不够用 因为我既要独立做这边自己的课题 还要协助各位完成
  • Java 中如何对集合进行排序

    Java 中如何对集合进行排序 在 Java 中 集合是一种非常常见的数据结构 它可以用来存储一组元素 而且可以动态地增加或删除元素 在实际的开发中 我们经常需要对集合中的元素进行排序 以便更方便地查找 比较和操作集合中的数据 本文将介绍
  • 金融期货具体的开户条件

    金融期货主要是以金融产品为标的的标准化期货合约 金融产品涵盖指数 股票 汇率 利率等金融工具 一般是以现金交割的方式到期结算 主要是在中国金融期货交易所上市 目前上市了股指期货 国债期货 沪深300指数期权等品种 金融期货支持手机网上开户
  • 数据库表结构

    数据库表结构 mysql SELECT COLUMN NAME 列名 COLUMN TYPE 数据类型 DATA TYPE 字段类型 CHARACTER MAXIMUM LENGTH 长度 IS NULLABLE 是否为空 COLUMN C
  • ZeroTier内网穿透工具配置

    之前有写了一篇frps内网穿透的教程 不过frps要求比较高 需要有个有固定IP的服务器 所以这个就有限制了小伙伴们没有服务器的 这次我们写个不需要外网服务器的教程 软件就是zerotier这个东西了 原理我们就不分析了 反正内网穿透的理解
  • 放大器的增益带宽积

    放大器的增益带宽积 指定为GBWP GBW GBP或GB 是放大器带宽和带宽的增益的乘积 是用来简单衡量放大器的性能的一个参数 在频率足够大的时候 增益带宽积是一个常数 假设运算放大器的增益带宽积为1 MHz 它意味着当频率为1 Mhz时
  • Python:Jenkins包

    文章目录 简介 功能介绍 连接Jenkins 操作Jenkins的jobs 基本功能集锦 获取当前所有的job列表 获取指定job的基本配置 获取指定job的信息字典 获取执行构建记录的完整信息 参考文献 简介 Jenkins是一个比较方便
  • 学习GDB

    http blog csdn net blueboy82006 article details 5586109 学习使用 GNU GDB Debugger 作者 王聪 GDB 常用命令参考手册 GDB 命令行参数 GDB 命令 GDB 操作
  • Python文件处理

    读取json文件 with open r C Users Administrator Desktop test openapi json encoding utf 8 as f data json load f return data 返回
  • 使用librdkafka的C++接口实现简单的生产者和消费者

    一 编译librdkafka 环境 Fedora 20 32位 依赖 pthreads 必选 zlib 可选 libssl dev 可选 libsasl2 dev 可选 先查看自己的linux上是否安装了pthreads 指令如下 loca
  • 将图像旋转的方法

    import cv2 import numpy as np img cv2 imread 1 png 1 rows cols img shape 2 参数一 旋转中心 参数二 旋转角度 参数三 缩放因子 正数为逆时针旋转 负数为顺时针旋转
  • 《Flexible Image Denoising with Multi-layer Conditional Feature Modulation》阅读笔记

    摘要 为了实现灵活的非盲图像降噪 现有的深层网络通常将嘈杂的图像和噪声级别图作为输入 以使用一个模型来处理各种噪声级别 然而 在这种解决方案中 噪声方差 即 噪声水 平 仅被部署为利用通道方向的移位来调制卷积特征的第一层 这在平衡噪声去除和
  • Kafka消费组(consumer group)详解

    一直以来都想写一点关于kafka consumer的东西 特别是关于新版consumer的中文资料很少 最近Kafka社区邮件组已经在讨论是否应该正式使用新版本consumer替换老版本 笔者也觉得时机成熟了 于是写下这篇文章讨论并总结一下
  • Js中Object方法

    1 Object assign Object assign 是通过复制一个或多个对象 创建一个新对象 var source1 a 1 var source2 b 2 Object assign source1 source2 a 1 b 2