美文网首页
对象新增的一些方法

对象新增的一些方法

作者: 吴高亮 | 来源:发表于2019-01-04 22:53 被阅读0次

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]
}

相关文章

  • 对象新增的一些方法

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

  • 对象新增的一些方法

    Object.is() Object.is()用来比较两个值是否严格相等,与 "==="行为基本一致 不同之处有两...

  • 对象的扩展

    对象的改变分为对象的扩展和对象的新增方法。 对象的扩展和新增的方法都有哪些? 1:属性的简洁表示法 2:属性名表达...

  • js对象新增的方法

    1.object.js() 类似与相等运算符== 和严格运算符===,不过==和===都有缺点,==会自动转...

  • es6-数值扩展

    数值处理新增特性 新增方法,如数学处理 方法调整,全局方法移植到 Number 对象上 多进制表示方法 是否有穷 ...

  • JavaScript 模式之内置对象的原型 前端早读课第28期

    软件和教堂非常相似——建成之后我们就在祈祷。 不在内置对象的原型上新增方法 写法 内置对象的原型上新增方法会降低代...

  • ECMAScript6 - 学习笔记 整理 - 3

    对象新增方法 数组去重 ES6 新构造函数方法

  • 对象的新增方法(笔记)

    Object.assign() 1.Object.assign方法用于对象的合并,将源对象的所有可枚举属性,复制到...

  • ES6学习 第四章 字符串的新增方法

    前言 本章介绍字符串对象的新增方法。不常用的方法不做重点笔记。本章原文链接:字符串的新增方法[https://es...

  • ES6中数组新增扩展

    一、构造函数新增的方法 二、实例对象新增的方法 五、排序稳定性将sort()默认设置为稳定的排序算法

网友评论

      本文标题:对象新增的一些方法

      本文链接:https://www.haomeiwen.com/subject/wldlrqtx.html