ES6对象扩展学习

ES6对象扩展学习

1、属性简写,在对象中允许只写属性名而不写属性值,属性值等于属性名所代表的变量。

var foo="hello"
var obj={foo}
//相当于obj={foo:"hello"}

2、函数简写,ES6对象中方法可以省去function。

var obj={
	sayHi(){
		console.log("hi");
	}
	//原ES5写法
	sayHi:function(){
		console.log("hi");
	}
}

3、属性名表达式,ES6定义对象属性有两种方式

var obj={
	one:1,    //正常定义方式
	['tw'+'o']:2    //使用属性名表达式定义
}
obj.one  //1
obj.two //2
obj['one'] //1
obj['t'+'wo']  //2

//当属性名表达式为对象时,属性名会转换为[object Object]
var obj2{
 [obj]:3
}
obj2   //{[object Object]: 3}

4、方法的name属性,返回方法名
bind 方法创造的函数, name 属性返回“bound ”加上原函数的名字:
Function 构造函数创造的函数, name 属性返回“anonymous

var obj={
	sayHi(){
		console.log("hi");
	}
}
obj.sayHi.name     //"sayHi"

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

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

6、Object.assign(target,source),用于将源对象可枚举属性复制到目标对象,其中第一个参数为目标对象,其他为源对象。
Object.assign 方法实行是浅复制,而不是深复制。也就是说,如果源对象某个属性
的值是对象,那么目标对象复制得到的是这个对象的引用。

//具有相同属性名时,会覆盖目标对象的对应属性
var obj1={
    a:1
}
var obj2={
	a:4
    b:2
}
var obj3={
    c:3
}
Object.assign(obj1,obj2,obj3)  
obj1      //{a:4,b:2,c:3}

7、Object.setPrototypeOf 方法用来设置 一个对象的prototype 对象,并返回参数对象本身
Object.getPrototypeOf() 则用于读取 个对象的 prototype 对象。

8、Object.value(),Object.keys(),Object.entries()分别用于返回对象属性值,对象属性键和同时返回键和值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值