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}