查漏补缺之Object

Object几乎是所有对象的原型,存储键值对
Object构造函数有许多方法,与Reflect中许多方法类似

Object.assign()

进行赋值,将源对象复制到目标对象中,并且会覆盖相同的属性
Object.assign(target, ...sources)
target目标对象。sources源对象 返回值为更改后的目标对象 
但不能实现深拷贝

Object.create()

使用指定的原型对象和属性创建一个新对象。类似于Reflect.construct()
function OneClass(num) {
    this.name = 'one';
    this.id=num;
}
 
function OtherClass(num) {
    this.name = 'other';
    this.oid=num;
}
 
// 创建一个对象:
var d1 = Reflect.construct(OneClass, [1],OtherClass);
var d2 = Object.create(OneClass.prototype);
OtherClass.apply(d2,[1])
console.log(d1);//OtherClass {name: "one", id: 1}
console.log(d2);//OneClass {name: "other", oid: 1}

Object.defineProperty()

给对象添加一个属性并指定该属性的配置,并返回该对象
类似于Reflect.defineProperty() ,但Reflect返回的是boolean

Object.defineProperties()

给对象添加多个属性并分别指定它们的配置。

Object.entries()总记不住的一个

将 Object 中的键值对 转换为 对应的数组 返回转换后的数组,在遍历中很有用

Object.freeze()

冻结对象:其他代码不能删除或更改任何属性。

Object.getOwnPropertyDescriptor()

与Reflect.getOwnPropertyDescriptor()类似,返回对象指定的属性配置。

Object.getOwnPropertyNames()

返回一个数组,它包含了指定对象所有的可枚举或不可枚举的属性名。

Object.getOwnPropertySymbols()

返回一个数组,它包含了指定对象自身所有的符号属性。

Object.getPrototypeOf()

返回指定对象的原型对象。

Object.is()

比较两个值是否相同(与==和===不同),

如果下列任何一项成立,则两个值相同:

  • 两个值都是 undefined
  • 两个值都是 null
  • 两个值都是 true 或者都是 false
  • 两个值是由相同个数的字符按照相同的顺序组成的字符串
  • 两个值指向同一个对象
  • 两个值都是数字并且
    • 都是正零 +0
    • 都是负零 -0
    • 都是 NaN
    • 都是除零和 NaN 外的其它同一个数字

Object.isExtensible()

判断对象是否可扩展,类似于Reflect.isExtensible()

Object.isFrozen()

判断对象是否已经冻结。

Object.seal()

防止其他代码删除对象的属性

Object.isSealed()

判断对象是否已经密封。

Object.keys()

返回一个所有元素为字符串的数组,其元素来自于object中的属性名字,即key值。类似于Reflect.ownKeys()

Object.preventExtensions()

防止对象的任何扩展。

Object.setPrototypeOf()

设置对象的原型(即内部 [[Prototype]] 属性)。

Object.values()

返回一个数组,其元素是object中各属性的值 就是values


补充知识:

props

要定义其可枚举属性或修改的属性描述符的对象。对象中存在的属性描述符主要有两种:数据描述符和访问器描述符(更多详情,请参阅Object.defineProperty())。描述符具有以下键:
configurable
true 当且仅当该属性描述符的类型可以被改变并且该属性可以从对应对象中删除。
默认为 false
enumerable
true 当且仅当在枚举相应对象上的属性时该属性显现。
默认为 false
value
与属性关联的值。可以是任何有效的JavaScript值(数字,对象,函数等)。
(这个要重点理解一下)
默认为 undefined
writable
true当且仅当与该属性相关联的值可以用assignment operator改变时。
默认为 false
get
作为该属性的 getter 函数,如果没有 getter 则为undefined。函数返回值将被用作属性的值。
默认为 undefined
get
作为该属性的 getter 函数,如果没有 getter 则为undefined。函数返回值将被用作属性的值。
默认为 undefined

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# AI面会问哪些问题? #
24847次浏览 491人参与
# 中国电信笔试 #
31080次浏览 283人参与
# 厦门银行科技岗值不值得投 #
7491次浏览 186人参与
# 你的实习产出是真实的还是包装的? #
18817次浏览 330人参与
# 如果秋招能重来,我会____ #
96691次浏览 500人参与
# 春招至今,你的战绩如何? #
59982次浏览 543人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
14143次浏览 209人参与
# i人适合做什么工作 #
36914次浏览 124人参与
# 我是面试官,请用一句话让我破防 #
79511次浏览 219人参与
# 哪些公司真双非友好? #
69200次浏览 287人参与
# 金三银四,你的春招进行到哪个阶段了? #
21567次浏览 277人参与
# 找AI工作可以去哪些公司? #
7673次浏览 186人参与
# 从事AI岗需要掌握哪些技术栈? #
7676次浏览 251人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
339915次浏览 2165人参与
# 面试尴尬现场 #
220755次浏览 861人参与
# 五一之后,实习真的很难找吗? #
102797次浏览 584人参与
# 你做过最难的笔试是哪家公司 #
30108次浏览 193人参与
# 你小时候最想从事什么职业 #
159840次浏览 2072人参与
# 应届生第一份工资要多少合适 #
20483次浏览 84人参与
# 阿里笔试 #
176460次浏览 1302人参与
# 一张图晒出你司的标语 #
3821次浏览 72人参与
# 面试被问期望薪资时该如何回答 #
382459次浏览 2163人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务