新增的对象字面量语法

1. 新增的对象字面量语法

  1. 成员速写

如果对象字面量初始化时,成员的名称来自于一个变量,并且和变量的名称相同,则可以进行简写

  1. 方法速写

对象字面初始化时,方法可以省略冒号和function关键字

  1. 计算属性名

有的时候,初始化对象时,某些属性名可能来自于某个表达式的值,在ES6,可以使用中括号来表示该属性名是通过计算得到的。

const prop1 = "name2";
const prop2 = "age2";
const prop3 = "sayHello2";

const user = {
    [prop1]: "小明",
    ",
    [prop2]: 100,
    [prop3](){
        console.log(this[prop1], this[prop2])
    }
}
user[prop3]();
console.log(user)


function createUser(loginId, loginPwd, nickName) {
    const sayHello = function () {
        console.log("loginId", this.loginId, "nickname", this.nickName)
    }
    return {
        loginId,
        loginPwd,
        nickName,
        sayHello,
        id: Math.random()
    }
}
const u = createUser("abc", "123", "aaa");
u.sayHello();


const user = {
    name: "小明",
    age: 100,
    sayHello(){
        console.log(this.name, this.age)
    }
}

user.sayHello();

2. Object的新增API

  1. Object.is
    用于判断两个数据是否相等,基本上跟严格相等(===)是一致的,除了以下两点:
  1. NaN和NaN相等
  2. +0和-0不相等
  1. Object.assign
    用于混合对象
  2. Object.getOwnPropertyNames 的枚举顺序

Object.getOwnPropertyNames方法之前就存在,只不过,官方没有明确要求,对属性的顺序如何排序,如何排序,完全由浏览器厂商决定。

ES6规定了该方法返回的数组的排序方式如下:

  • 先排数字,并按照升序排序
  • 再排其他,按照书写顺序排序
  1. Object.setPrototypeOf

该函数用于设置某个对象的隐式原型

比如: Object.setPrototypeOf(obj1, obj2),
相当于: obj1.__proto__ = obj2

console.log(obj1)
const obj1 = {
    a: 1
}

const obj2 = {
    b: 2
}

// obj1.__proto__ = obj2

Object.setPrototypeOf(obj1, obj2)

console.log(obj1)



console.log(NaN === NaN); // false
console.log(+0 === -0);  // true

console.log(Object.is(NaN, NaN))
console.log(Object.is(+0, -0))


const obj = {
    d: 1,
    b: 2,
    a: 3,
    0: 6,
    5: 2,
    4: 1
}
const props = Object.getOwnPropertyNames(obj)
console.log(props)

const obj1 = {
    a: 123,
    b: 456,
    c: "abc"
}

const obj2 = {
    a: 789,
    d: "kkk"
}

/*
{
    a: 789,
    b: 456,
    c: "abc",
    d: "kkk"
}
*/

//将obj2的数据,覆盖到obj1,并且会对obj1产生改动,然后返回obj1
// const obj = Object.assign(obj1, obj2);


const obj = Object.assign({}, obj1, obj2);

console.log(obj)

console.log(obj===obj1)

console.log(obj1)

console.log(obj2)

上一篇:this的指向


下一篇:python(保存后台数据)