JS创建对象的4种方法

26 阅读1分钟

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 });