对象新增的一些方法

1:super关键字;

this是指向当前的函数;也是代表当前的作用域;
es6新增了super指向当前对象的原型;

const proto = {
  foo: 'hello'
};

const obj = {
  foo: 'world',
  find() {
    return super.foo;
  }
};

Object.setPrototypeOf(obj, proto);
obj.find() // "hello"

上面代码中,对象obj.find()方法之中,通过super.foo引用了原型对象proto的foo属性。

2:Object.is();

ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。

ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。Object.is就是部署这个算法的新方法。
它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。

+0 === -0 //true
NaN === NaN // false

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

3:Object.assign();

Object.assign(target,source1,source2)方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target);用于对象的合并;

const target = { a: 1 };

const source1 = { b: 2 };
const source2 = { c: 3 };

Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}
第一个参数是目标对象;最后一个参数都是源对象;

注意点:首先是浅拷贝;是对对象的引用;原对象改变;拷贝后的也会改变;
2:同名替换;一旦遇到同名属性;会做替换处理后面的替换掉前面的

const target = { a: { b: 'c', d: 'e' } }
const source = { a: { b: 'hello' } }
Object.assign(target, source)
// { a: { b: 'hello' } }

3:Object.assign可以用来处理数组,但是会把数组视为对象

如下;
Object.assign([1, 2, 3], [4, 5])
// [4, 5, 3];
就会按位替换
替换了0位和1位;

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

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

对应的辅助方法;
Object.value();

var obj={foo:'bar',baz:42};
Object.values(obj);


//这个好全概括了
从Object中取出keys,values,entries方法;
let {keys, values, entries} = Object;

let obj = { a: 1, b: 2, c: 3 };

for (let key of keys(obj)) {
  console.log(key); // 'a', 'b', 'c'
}

for (let value of values(obj)) {
  console.log(value); // 1, 2, 3
}

for (let [key, value] of entries(obj)) {
  console.log([key, value]); // ['a', 1], ['b', 2], ['c', 3]
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Object.is() Object.is()用来比较两个值是否严格相等,与 "==="行为基本一致 不同之处有两...
    nomooo阅读 3,576评论 1 4
  • 属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。 上面代码表明,ES6允许在对象之中,直接写...
    oWSQo阅读 3,493评论 0 0
  • 1.属性的简洁表示法 允许直接写入变量和函数 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量...
    雨飞飞雨阅读 4,882评论 0 3
  • 三,字符串扩展 3.1 Unicode表示法 ES6 做出了改进,只要将码点放入大括号,就能正确解读该字符。有了这...
    eastbaby阅读 5,488评论 0 8
  • 当他不爱你 心已不在跳动 逃离一切与你 当他不爱你 发丝飘落在地 砸出一片狼藉 当他不爱你 香水掩盖冷漠 拾到一份回忆
    即墨青衣阅读 1,697评论 4 3

友情链接更多精彩内容