关于es6中对象的扩展

1.Object.is()

es5比较两个值是否相等,只有两个运算符,相等(==) 和 严格相等(===),他们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0 等于 -0。es6提出了Object.is()方法,它用来比较两个值是否相等,与严格运算符(===)的行为基本一致

Object.is(‘foo‘, ‘foo‘)  //false     Object.is({} , {}) //false

不同之处只有两个, Object.is(+0, -0) // true  Object.is(NaN , NaN) // true

2.Object.assign()

Object.assign 方法用于将源对象的所有可枚举属性复制到目标对象

var target = { a: 1}

var source = { b:2 }
var source2 = { c: 3}

Object.assign(target , source, source2)

target //  { a: 1, b: 2, c:3 }
// 第一个参数是目标对象,后面的是源对象

注意:如果目标对象和源对象有重名属性, 或多个源对象有同名属性,则后面的属性会覆盖前面的属性

如果只有一个参数,Object.assign会直接返回该参数

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

如果该参数不是对象,则会先转成对象,然后返回

typeof Object.assign(2) // ‘object‘

由于null 和 undefined 无法转成对象,所以如果将他们作为参数,就会报错, 如果他们不再首参数,便不会报错,会跳过他们;其他类型的值不再首参数也不会报错,但是除了,字符串会以数组的形式复制到目标对象,其他值不会产生效果。

var v1 = ‘abc‘
var v2 = true
var v3 = 10
var obj = Object.assign({}, v1, v2, v3)
obj // { "0": "a", "1": ‘b", "2": "c"}

注意:Object.assign 是浅拷贝

常见用途: 为对象添加属性、克隆对象、为对象添加方法、为属性制定默认值

3.Object.keys()

es5引入了Object.keys方法,返回一个数组,成员是参数对象自身(不含继承)所有可遍历(enumerable)属性的键名。

var obj = { foo: ‘bar‘, baz: 42}
Object.keys(obj) // ["foo", "baz"]

4. Object.values()方法返回一个数组,成员是参数对象自身的所有(不含继承)可遍历

var obj = { foo: ‘bar‘, baz: 42}
Object.values(obj) // ["bar", 42]

5.Object.entries

Object.entries返回一个数组成员是参数对象自身所有可遍历属性的键值对数组

var obj = { foo: ‘bar‘, baz: 42}
Object.entries(obj) // [ ["foo", "bar"], ["baz", 42]]

原文地址:https://www.cnblogs.com/czy960731/p/9725243.html

时间: 2024-10-08 20:27:21

关于es6中对象的扩展的相关文章

ES6知识点-对象的扩展

3.6对象的扩展 3.6.1属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法. var foo = 'bar'; var baz = {foo}; console.log( baz ) // { foo: 'bar' } //等同于 var foo = 'bar'; var baz={ foo:foo}; console.log( baz ) // { foo: 'bar' } var func= { method() { return "这里是ES6方法简写!";

ES6 中字符串的扩展

1. 字符的Unicode表示法 JavaScript允许采用 \uxxxx 形式表示一个字符,其中 xxxx 表示字符的 Unicode 码点. "\u0061" // 表示小写字母"a" 但是这种表示法只限于码点在 \u0000-\uFFFF 之间的字符,有些字符的 Unicode 编码超出了这个范围,那么就必须使用2个双字节的形式表示. "\uD842\uDFB7" // "??" 注意不是吉祥的"吉"

【ES6】对象的扩展

Object.setPrototypeOf(obj, proto) Object.getPrototypeOf(obj) Object.getOwnPropertyDescriptor(obj,property) 获取该属性的描述对象.描述对象的enumerable属性,称为“可枚举性”,如果该属性为false,下列操作会忽略当前属性 for...in循环:只遍历对象自身的和继承的可枚举的属性. Object.keys():返回对象自身的所有可枚举的属性的键名. JSON.stringify()

ES6中对象

ES6允许把声明的变量直接赋值给对象,我们看下面的例子. let name="jspang"; let skill= 'web'; let obj= {name,skill}; console.log(obj); 对象Key值构建 有时候我们会在后台取出key值,而不是我们前台定义好的,这时候我们如何构建我们的key值那.比如我们在后台取了一个key值,然后可以用[ ] 的形式,进行对象的构建. let key='skill'; var obj={ [key]:'web' } cons

es6中对象的类与继承方法

对于对象,我一直搞不清楚到底是该如何去继承,如何去书写.在熟练es6之后,终于会尝试写出来了. 代码如下: 1 //我们假定父类为person,子类为man 2 class person{ 3 constructor(name,age){ 4 this.name=name; 5 this.age=age 6 }, 7 say(){ 8 return console.log(this.name+this.age); 9 } 10 } 12 class man extends person{ 13

ES6 之 对象的扩展

属性的简洁表示法 let book = '234'; let good = '432'; let obj01 = { book, good } console.log(obj01); 方法名的name属性 ..... Object.is() // Object.is() 用来比较俩个值是否严格相等,与 === 行为基本一致 // == 会自动转化数据类型 // === NaN不等于 NaN 以及 +0 和 -0 console.log(Object.is('foo','foo')); // tr

ES6中对对象的扩展

ES6允许直接写入变量和函数作为对象的属性和方法.这样的书写更加简洁. ES6允许在对象中只写属性名,不写属性值.这时,属性值等于属性名所代表的变量. function f(x , y){ return {x ,y}; } f(1,2)// Object {x:1,y:2} function getPoint(){ var x=1; var y=10; return {x,y}; } getPoint()//{x:1,y:10} js语言定义对象的属性有两种方法.obj.foo=true;obj

ES6 常用总结——第三章(数组、函数、对象的扩展)

1.1. Array.from() Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map). 下面是一个类似数组的对象,Array.from将它转为真正的数组. let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3}; // ES5的写法var arr1 = [].slice.call(arrayLike);

ES6浅谈--数组扩展、对象扩展

数组扩展 1.includes()方法,参数为要检测的值.includes方法有点像indexOf(),indexOf未检测到则返回-1,否则返回下标.includes则是返回true或false.includes可以检测NaN.第二个参数表示从什么位置检测. 2.flat和flatMap.flat负责把数组拉平,意思是一个二维数组调用flat方法会变成一维数组.参数传的是数组的维度.例如传2则表示将3维拉成1维.如果数组中有空位则跳过.flatMap有点像flat方法和Map方法的结合.先对每