ES6精讲04-拓展的对象功能

149 阅读1分钟

1.es6直接写入变量和函数,作为对象的属性和方法

const name = '小马哥', age = 20;
const person = {
    name,//等价于name:name
    age,
    sayName(){
        console.log(this.name);
    }
}
person.sayName()// 小马哥

function fn(x,y) {
     return {x,y};
 }
 console.log(fn(10,20));// {x:10,y:20}

2.对象的set和get

  • 访问cart的对象的时候会调用get方法
  • 修改cart对象的时候会调用set方法
let cart = {
    wheel:4,
   name:"King"
    set(newVal){
        if(newVal < this.wheel){
            throw new Error('轮子数太少了')
        }
        this.wheel = newVal;
    },
    get(){
        return this.wheel;
    }
}
// console.log(cart.get());
cart.set(6);//正常修改
cart.set(2);// 会抛出错误
console.log(cart.get())

3.字符转变量拼接:

对象的属性是可以通过[]和''的方式进行拼接的

例子1:

const obj = {};
obj.isShow = true;
        
const name = 'a';
obj[name+'bc'] = 123;
console.log(obj); //{isShow: true, abc: 123}

例子2:

const obj = {};
obj['f'+'bc'] = function () {
    console.log(this);
}

console.log(obj); //{fbc:function(){console.log(this)}}

例子3:

const name = 'a';
const obj = {
    isShow:true,
    [name+'bc']:123,
    ['f'+name](){
       console.log(this);         
    }
}
console.log(obj);//{isShow: true, abc: 123, fa: ƒ}

4.对象的方法

1.Object.is():单纯的比较值是否相等,不会做隐式类型转换。

console.log(NaN === NaN);  // false

// 比较两个值是否严格相等
// console.log(NaN === NaN);
console.log(Object.is(NaN,NaN));// true
console.log(Object.is(undefined,undefined)); // true

var go=111
var here=111
console.log(Object.is(go,here)); //true

2.Object.assign():用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

// 对象的合并
// Object.assign(target,obj1,obj2....)
        
// 返回合并之后的新对象
let newObj = Object.assign({},{a:1},{b:2});
console.log(newObj); // {a: 1, b: 2}