美文网首页
对象的扩展

对象的扩展

作者: yschen | 来源:发表于2018-08-09 21:00 被阅读0次

1、属性方法的简洁表示

属性简写

var foo='foo';

var goo= {'foo':foo};可以写成const goo={foo};

方法简写

var obj={

    fun:function(){

        return 'test';

    }

};

可以写成

var obj={

    fun(){return 'test';}

};

2、属性名表达式 

var obj={

    "name":"cc",

    "age":22

};

var fieldc = "field"+3;

如果其中有属性为表达式,在ES5中就必须通过obj[fieldc ]来赋值

ES6中可以写成

var obj={

    ["name"]:"cc",

    ["age"]:22,

   [fieldc ]:""

};

3、对象比较

ES5比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。

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

+0 === -0//true

NaN === NaN// false

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

Object.is(NaN, NaN)// true

4、Object.assign

Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。注意,如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。

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

Object.assign({a:"new"})//{a:"new"}

②如果该参数不是对象,会将该参数转化为对象,

typeofObject.assign(0)// "object"

③undefined 和 null 作为首参数会报错,不为首参时也不会报错

Object.assign(undefined)// 报错 Cannot convert undefined or null to objectObject.assign({},undefined)// 空对象 {}

④字符串会以数组形式拷贝到目标对象,而数值和布尔值等不会产生效果

⑤Object.assign 只拷贝源对象的自身属性(不会拷贝继承属性),也不会拷贝不可枚举的属性。

Object.assign(),会忽略enumerable为false的属性,只拷贝对象自身的可枚举的属性。

ES5中有三个操作会忽略:

for...in循环:只遍历对象自身的和继承的可枚举的属性。

Object.keys():返回对象自身的所有可枚举的属性的键名。

JSON.stringify():只串行化对象自身的可枚举的属性。

5、属性的遍历

for…in       

# for…in循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)。

Object.keys(obj)         

# Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名。

Object.getOwnPropertyNames(obj)      

# Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)。

Object.getOwnPropertySymbols(obj)

# Object.getOwnPropertySymbols返回一个数组,包含对象自身的所有 Symbol 属性。

Reflect.ownKeys(obj)

# Reflect.ownKeys返回一个数组,包含对象自身的所有属性,不管属性名是 Symbol 或字符串,也不管是否可枚举。

遍历排序:数字属性——>字符串属性——>Symbol值属性

相关文章

  • JQuery插件

    类扩展: 对象扩展:

  • 《ECMAScript 6 入门》笔记

    变量的解构赋值 字符串的扩展 正则的扩展 数值的扩展 函数的扩展 数组的扩展 对象的扩展 对象的新增方法 表单验证...

  • 对象的扩展

    属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 Object.is(...

  • 对象的扩展

    对象的扩展 属性和方法简写 var foo ='bar' var baz = {foo} <=> va...

  • 对象的扩展

    1、属性方法的简洁表示 属性简写 var foo='foo'; var goo= {'foo':foo};可以写成...

  • 对象的扩展

    属性的简洁表示法 属性名表达式 方法的 name 属性 Object.is() Object.assign() 属...

  • 对象的扩展

    属性的简结表示法 属性名表达式 Object.is() Object.assign() Object.keys()...

  • 对象的扩展

    一、属性的简介表示法 (1)ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁 上面代码表明...

  • 对象的扩展

    ** 参考**书籍:ECMAScript 6 入门作者:阮一峰 属性的简洁表示法ES6 允许直接写入变量和函数,作...

  • 对象的扩展

    简而言之,对象的扩展就是通过类似于 extend 的方法,将对象的功能进行方便的管理(删除或者添加或者是修改)。 ...

网友评论

      本文标题:对象的扩展

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