ES6 新增对象的特性和方法

ES6中对对象新增了很多特性和方法,简化了很多。

  1. 成员速写和方法速写

    //befor:
    function createUser(name,age,sex) {
    		return{
    			name : name,
    			age : age,
    			sex : sex,
    			say : function(){
    				console.log(this.name,this.age)
    			}
    		}
    	}
    //es6
    function createUser(name,age,sex) {
    	 return{
    			name,
    			age,
    			sex,
    			fun(){
    				console.log(this.name,this.age)
    			}
    		}
    	}
    	const user = createUser("1","22","boy");
    	console.log(user);
    	user.fun();
    

    省略了冒号和属性值,这样写让代码更简洁了

  2. 项目2

    //befor
    const user = {
            name : '紫紫',
            age : 20
            }
         user['ages'] = 20;
         console.log(user)
         //{name: "紫紫", age: 20, ages: 20}
    //now
            const prorp1 = "name";
    		const prorp2 = "age";
            const users = {
            	[prorp1] : '张三',
            	[prorp2] : 112
            }
            console.log(users);
            {name: "张三", age: 112}
    

用数组变量作为属性名

在ES6中还新增了许多对象的API

  1. Object.is(),比较两个值是否相同,ES5中有相等运算符(==)和严格相等运算符( === ),这两个都有各自的缺点,相等运算符会自动转换数据类型,严格运算符判断NaN,+0 -0,判断的问题,Object.is() 就很好的解决了这些问题

    console.log(NaN === NaN) //false
    console.log(-0 === +0) //trun
    
    console.log(Object.is(NaN,NaN)) //true
    console.log(Object.is(+0,-0)) //false
    
    
  2. assign(url: DOMString) 混合对象、克隆

    const obj1 = {
    		a : 1,
    		b : 2,
    		c : 3
    	} 
    	const obj2 = {
    		d : 3,
    		e : 4
    	}
    const obj = Object.assign({},obj1,obj2);
    console.log(obj);
    console.log(obj == obj1)
    /*Object
    	a: 1
    	b: 2
    	c: 3
    	d: 3
    	e: 4*/
    //false
    

    先将obj2的所有可枚举对象赋值给obj2,然后在依次obj1的属性

  3. getOwnPropertyNames() 枚举的顺序,返回一个数组,枚举出来对象的属性

    const obj = {
    			a : 1,
    			b : 3,
    			c : 5,
    			d : 7,
    			0 : 1,
    			3 : 5
    		}
    		console.log(obj);
    		console.log(Object.getOwnPropertyNames(obj))
    		//{0: 1, 3: 5, a: 1, b: 3, c: 5, d: 7}
    		//(6) ["0", "3", "a", "b", "c", "d"]
    

    按顺序排列了对象的属性名

  4. setPrototypeOf() 设置某个对象的隐式原型 ,接收两个参数:
    第一个是现有对象,第二个是原型对象。

const objj1 = {
			a : 1
		}
const objj2 = {
			b : 2
		}

Object.setPrototypeOf(objj1,objj2)
console.log(objj1)
/*
 {a: 1}
   a: 1
     __proto__: 
       b: 2__proto__: Object
*/

可以看到a1的__proto__ 里面有了b2

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值