1.字面量
var obj = { a:1,b:2 };
2.构造函数
var obj1 = new Object();
//可以传递参数
var tmp = { name:'green' };
var obj1 = new Object(tmp);
3.依托原型来创建对象(通过模板)
Object.create,Object,修改defineProperty
var obj2 = Object.create({company:'XXX'});
//原型(模板), 属性描述符
// 第一组: 初始值 和 是否可写
var obj2 = Object.create({company:'金渡'},{
name:{
value:'Green', // 初始值
writable:false, // 不可写
}
});
// 第二组: 设置和获取方式
var globalAge;
var obj3 = Object.create({}, {
age: { // 数据劫持
set(newAge) {
if (newAge > 100 || newAge < 1) {
alert('瞎设置年龄!');
return;
}
globalAge = newAge;
console.log('name被设置了');
},
get() {
console.log('name被获取了');
return globalAge;
}
}
});
//第三组: 设置级别 是否可以被for in 枚举, 是否可以被枚举
// 修改配置 = 删除属性 或 再次配置
var obj4 = Object.create({}, {
age: { // 数据劫持
// enumerable:false, 默认false
// configurable:false,默认false
// 是否可用被修改 和删除
configurable: true,
get() {
console.log('第一次对obj4设置属性的get');
return '36'
}
}
});
// 允许被【再次设置】configurable:true才可用操作
Object.defineProperty(obj4, 'age', {
get() {
console.log('2222');
return 'XXXXX'
}
});
4.创建对象属性的assign属性的附加(合并对象返回新对象)
let orgObj = {}
let obj5 = Object.assign(orgObj, { a: 1, d: 3 });