方式一:字面量
如:
var obj = {
// a: 1,
// b: 2
// }
方式二:构造函数
Var obj2=new object(); //如果不传递或者传递空数值之类的,默认返回的控对象。如果传递有值,就返回该值。
方式三:定制化创建对象
let obj3=Object.create(null);//必须传值,否则控制台就会报错。
let obj4=Object.create({},{
//定制化属性
myAge:{
value:35,//不能和get和set同时使用
writable:false //也是不能和get和set同时使用 ,writable表示是否可以修改值,true为可以,false为不可以。
})
console.log(obj4,'obj4');
//get和set
var age="哈哈哈"
let obj5=Object.create({},{
//定制化属性
myAge: {
get() {
return age;
},
set(newV) {
//数据劫持
if(newV > 0 && newV < 20) {
console.log()
age = newV;
} else {
alert('数据劫持')
}
}
}); //不能不传值
console.log(obj5, 'obj5')
//Object.create(对象,{属性名:属性描述器对象})
let obj6 = Object.create({}, {
//定制化属性
myAge: {
value: 1,
configurable: true, //可配置 是否可以使用delete、能否改变特性,能否修改访问器属性,false为不可重新定义
enumerable: true //可枚举 是否可以枚举出内部属性【for(let key in obj6){】
}
}); //不能不传值
//试验configurable为false时是否可以进行重新定义
Object.defineProperty(obj6, 'myAge', {
get() {
return '1'
}
})
// 试验是否可以枚举
for(let key in obj6) {
console.log('key', key)
console.log('value:', obj6[key])
}
console.log(obj6, 'obj6')
//方式4
//assign 合并对象
let obj7 = object.assign({
a: 1
}, {
b: 1
})
console.log(obj7)
})