Object.assign()

Object.assign()方法用于合并对象,只会合并可枚举的属性

const obj1= {a: 1}
const obj2 = Object.assign({}, obj1) // 将一个空对象和obj1合并在一起,相当于你复制对象
obj1.a = 2
console.log(obj2.a) // 1 两个对象是独立的。
const obj3 = {a: {b: 1}}
const obj4 = Object.assign({}, obj3) // 将obj3和一个空对象合并在一起
obj3.a.b = 2
console.log(obj.4.a.b) // 2 两个对象又不是独立的了,,合并的对象属性里面如果还是对象,那么合并后就会存在这种情况。
const a = {a: 1} const b = {b: 2}
const c = Object.assgin(a, b, {c: 3})
console.log(c) // {a: 1, b: 2, c: 3}

如果合并的对象 都有某一个相同的属性名,则后面的覆盖掉前面的对象。

Object.create()

Object.create() 方法使指定的原型对象和属性去创建一个新对象

const aa = Object.create(null)
console.log(aa) // {} 以null为原型创建了一个对象,这个对象非常的干净,不继承任何东西
const bb = Object.create(Array.prototype)
bb 这个对象 将会拥有数组有的所有方法,因为是以数组的prototype为原型创建的对象。

Object.defineProperties()

Object.defineProperties()方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象

const obj = {a: 1, b: 2}
Object.defineProperties(obj, {
a: {value: ''hello, writable: false},
c: {value: true, writable: true},
d: {value: 'hello', writable: false}
})
// 上面value 是属性的值,writable属性是 是否可以修改属性值
console.log(obj) // {a: 'hello', b: 2, c: true, d: 'hello'}
obj.c = 3
console.log(c) //
obj.a = 4
console.log(a) // 'hello'

Object.defineProperty()

Object.defineProperty() 方法会直接在对象上定义一个新属性,或修改现有的属性,并返回这个对象

const obj = {a: 1}
Object.defineProperty(obj, 'a', {
enumerable: false,
configurable: false,
writable: false,
value: 'hello wrod'
})
console.log(obj) // {a: 'hello wrod'}

enumerbale是否在对象的枚举属性中 默认false

configurable 是否可修改或删除属性特性(属性特性就是这一堆值为false或则会true的东西),默认false

wrtable 是否可以修改属性的值 默认为false

如果你在对象中未使用 Object.defineProperty(), Object.defineProperties()或Objecr.create()函数的情况下添加对象属性,则enumerbale,configurable,wrtable 默认都是true

Object.entries()

Object.entries()方法你可以简单的理解为把对象可枚举的属性和值变成数组,

const obj = {foo: 'bar', too: 22}
console.log(Object.entries(obj)) // [['foo', 'bar'], ['too', 22]]

Object.getOwnpropertyDescriptor()

Object.getOwnpropertyDescriptor()返回一个对象上的一个属性的 描述符,就是是否可枚举是否可修改等等,

const obj = {a: 2}
const b = Object.getOwnpropertyDescriptor(obj, 'a')
console.log(b) //{value: 2, writable: true, enumerable: true, configurable: true}

Object.getOwnPropertyDescriptors()

Object.getOwnPropertyDescriptors()返回对象所有属性的描述符

const obj = {a: 1, b: 2}
const o = Object.getOwnPropertyDescriptors(obj)
console.log(o)
// {{value: 1, writable: true, enumerable: true, configurable: true},
{value: 2, writable: true, enumerable: true, configurable: true}}

Object.getOwnpropertyNames()

Object.getOwnpropertyNames()返回对象自身所有的属性名组成的对象

const obj = {a: 1, b: 2, c: 3, d: 4}
const o = Object.getOwnpropertyNames(obj)
console.log(o) // ['a', 'b', 'c', 'b']

Object.getPrototypeOf()返回指定对象的原型

const proto = {}
const obj = Object.create(proto)
console.log(Object.getPrototypeOf(obj) === proto) // true

Object.is()

Object.is()方法传递两个参数,判断两个参数是否相等。

Object.is()和 === 的区别是Object.is() 会让NaN和NaN相等+0和-0不相等。

===是+0和-0相等,NaN 和NaN 不想等。

console.log(Object.is(+0, -0)) // false

+0 === -0

Object.preventExtensions()

Object.preventExtensions()让一个对象不可扩展(就是不让添加新属性),并返回原对象,永远不能添加新属性,但可以删除已有的属性

const o ={}
Object.preventExtensions(o)

Object.isExtensble()

Object.isExtensble()方便判断一个对象是否可扩展

const obj = {}
Object.isExtensble(obj) // true 可以添加新属性

Object.freeze()

Object.freeze()方法 用于冻结对象,被冻结的对象,不可以添加新属性,不可以删除原有属性,也不可以修改原有属性,该对象永远不变。

const obj = {a: 2}
Object.freeze(obj)
obj.a = 3
console.log(a) // 2 不可以修改

Object.isFrozen()

Object.isFrozen() 判断一个对象是否被冻结
const obj = {}
Object.isFrozen(obj) // false 未冻结

Object.seal()

Object.seal()方法用于密封一个对象,密封只是不可以添加和删除对象的属性,不可以修改属性的可枚举可写可读配置,但是可以修改对象的已有属性的值

Object.isSealed()

Object.isSealed()放啊判断一个对象是否被密封,是的话返回true  否 返回false

Object.keys()

Object.keys()方法由对象的键 组成的一个数组,如果传入的值不是对象,则会转化为对象。

Object.keys('abc') // ['0', '1', '2']  'abc'是一个字符串,转化为对象以后 他的键就是他的索引咯 所以 输出了['0', '1', '2']
Object.keys([1, 2, 3]) // ['0', '1', '2'] 数组的元素的键就是数组元素的索引
Object.keys({a: 'aa', b: 'bb'}) // ['a', 'b']

Object.prototype.hasOwnProperty()

hasOwnProperty()方法用于判断对象里面是否有某属性,只判断自带的属性。

const  o = {a: 1}
o.hasOwnProperty('a') // true
o.hasOwnProperty('toString') //false

Object.prototype.hasOwnProperty()

hasOwnProperty()方法用于判断对象里面是否有某属性,只判断自带的属性。

const  o = {a: 1}
o.hasOwnProperty('a') // true
o.hasOwnProperty('toString') //false

Object.prototype.isPrototypeOf()

isPrototypeOf()方法用于判断一个对象是否在另一个对象的原型上。

const a = {amz: 1}
const b = Object.create(a)
a.isPrototypeOf(b) //true

Object.prototype.propertyIsEnumerable()

propertyIsEnumerable()方法判断一个对象的自身属性在当前对象是否可枚举

const o = {a: 1}
o.propertyIsEnumerable('a') //true
Object.defineProperties(o, {b:{value:2,enumerbale:false}})
o.propertyIsEnumerbale('b') //false

Object.prototype.toString()

toString()方法返回一个对象的字符串表示

const  o = {a: 1}  o.toString()   //"[object Object]"

Object.prototype.toLocaleString()

toLocaleString()方法返回一个对象的字符串表示

const  o = {a: 1}  o.toLocaleString()   //"[object Object]"

toLocaleString() 方法在日期字符串对象数字数组都有,但是它们是有区别的。

JavaScirpt对象原生方法的更多相关文章

  1. 像jq那样获取对象的js原生方法

    使用过jq的童鞋非常喜欢jq获取对象的方法,只要$()就可以获取,在此我封装一个js获取对象的方法 [注意]只对chrome,Firefox,opera,Safari,ie8及ie8以上版本有效 fu ...

  2. 通过js调用android原生方法

    有时候我们有这样一个需求,监听html中控件的一些事件.例如点击html中某个按钮,跳转到别的activity,复制某段文本. 首先是对webview的设置: myWebView = (WebView ...

  3. 《JavaScript权威指南》学习笔记 第五天 window对象的方法。

    前天和昨天大致浏览了犀牛书的函数.类与模块.正则表达式.JavaScript扩展.以及服务端的js.这些方面对于我目前的水平来说比较难,一些最基本的概念都不能领会.不过最复杂的知识占用平时使用的20% ...

  4. 【转】3篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:官方原生方法分析

    作者: 牛A与牛C之间 时间: 2013-11-17 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第3篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  5. JS 中 原生方法 (四) --- Object

    Javascript 中 str. arr.date.obj 等常见的原生方法总结 本文也说主要阐释了 Javascript 中的基础类型和 引用类型的自带方法,那么熟悉的同学又可以绕道了 总是绕道, ...

  6. JS 中 原生方法 (三) --- Date 日期

    本文也说主要阐释了 Javascript 中的基础类型和 引用类型的自带方法,那么熟悉的同学又可以绕道了 总是绕道,真是羞耻悳boy 当然 本文阐述的主要类容 from MDN ( zh-cn ) D ...

  7. JS 中 原生方法 (一) --- 字符串

    目录 Javascript 中 str. arr.date.obj 等常见的原生方法总结 Javascript 中 str. arr.date.obj 等常见的原生方法总结 本文也说主要阐释了 Jav ...

  8. js中对象和对象创建方法

    这一次我们来说一说在JavaScript中经常会用到的一个复杂基本类型,对象,先从对象的属性讲起,再讲对象的创建方法,基本涵盖了创建对象的各种方法,大家一起学习呀~ 一.对象 要掌握对象的使用及继承, ...

  9. JS中的对象和方法简单剖析

    众所周知,在js中对象就是精髓,不理解对象就是不理解js. 那么什么事js中的对象呢? 在js中,几乎一切皆对象: Boolean ,String,Number可以是对象(或者说原生数据被认作对象): ...

随机推荐

  1. sdoi2017苹果树

    题解: 非常奇妙的一题.. 没有免费操作我都不会$nk$....考试打个暴力就可以走人了 树上有依赖背包问题的正确做法是(为啥我之前学的不是这样的啊) 按照后续遍历做背包 做到一个点的时候 枚举它选不 ...

  2. alpha冲刺3/10

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺3 团队部分 后敬甲(组长) 过去两天完成了哪些任务 文字描述 组织第一次团队编程 继续阅读小程序开发文档 接下来的 ...

  3. [转]scp、sftp命令使用

    http://wangxuedong.com/index.php/archives/182/ 前言 有时候想上传文件到服务器或者从服务器下载一个文件到本地,但是服务器还没有配置ftp等环境,这时候可以 ...

  4. day52 js--- bom dom

    本文转载自李文周博客,-----cnblog.liwenzhou.com dom官网资料: http://www.w3school.com.cn/htmldom/dom_methods.asp Jav ...

  5. day30 网络编程 之进程,线程,协程

    进程点进去 线程点进去 协程点进去 什么是进程 进程(有时称为重量级进程)是一个执行中的程序.每个进程都拥有自己的地址空间.内存.数据栈以及其他用于跟踪执行的辅助数据.同一个程序执行两次,属于是两个不 ...

  6. CodeSignal 刷题 —— almostIncreasingSequence

    Given a sequence of integers as an array, determine whether it is possible to obtain a strictly incr ...

  7. elementui分页点击详情返回分页样式

    updated(){ $(".el-pager").children("li").removeClass("active"); var li ...

  8. Linux学习之RPM包管理-yum管理(十七)

    Linux学习之RPM包管理-yum管理 目录 IP地址配置 网络yum源 yum命令 光盘yum源搭建 IP地址配置 IP+子网掩码就可以在局域网(内网)使用. IP+子网掩码+网关+DNS就可以访 ...

  9. ECMAScript6 入门 变量的解析赋值

    ES6 允许按照一定模式,先=从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 这句话的解释:第一步从数组或者对象中提取值,第二步将提取到的值对变量进行赋值 数组的解 ...

  10. H5图片压缩上传

    1.所用到技术 HTML5 API:filereader.canvas 以及 formdata 目前来说,HTML5的各种新API都在移动端的webkit上得到了较好的实现.本次使用到的FileRea ...