javascript,创建对象的3种方法

创建对象,可以通过字面量、关键字new,Object.create()函数创建。  

1.字面量。

var o1={
    name:"kxh",
    deal:function(){
      return this.name; 
  }
}

2.关键字new。

var o4=new Object();
o4.name="kxh1";
o4.deal=function(){
    return this.name;
}

3.Object.Create()函数。

函数定义:

Object.create(proto [, propertiesObject ])

参数:

proto:一个对象,作为新创建对象的原型。

propertiesObject:一个对象值,可以包含若干个属性,属性名为新建对象的属性名,属性值为那个属性的属性描述符对象.

var o;
 
//创建一个原型为null的空对象
o = Object.create(null);
 
//以字面量方式(o = {};)创建的空对象就相当于:
o = Object.create(Object.prototype);
 
 
o = Object.create(Object.prototype, {
  //foo会成为所创建对象的数据属性
  foo: { writable:true, configurable:true, value: "hello" },
  //bar会成为所创建对象的访问器属性
  bar: {
    configurable: false,
    get: function() { return 10 },
    set: function(value) { console.log("Setting `o.bar` to", value) }
}})
 
 
function Constructor(){}
o = new Constructor();
// 上面的一句就相当于:
o = Object.create(Constructor.prototype);
//如果在Constructor函数中有一些初始化代码,Object.create不能执行那些代码
 
 
//创建一个以另一个空对象为原型,且拥有一个属性p的对象
o = Object.create({}, { p: { value: 42 } });
 
//省略了的属性特性默认为false,所以属性p是不可写,不可枚举,不可配置的
//虽然赋值24,但是实际值还是42
o.p = 24;

//只能枚举出新增加的属性“q”,属性“p”不可枚举
o.q = 12;
for (var prop in o) {
   console.log(prop)
}

//无法删除 
delete o.p
 
//创建一个可写的,可枚举的,可配置的属性p
o2 = Object.create({}, { p: { value: 42, writable: true, enumerable: true, configurable: true } });
原文地址:https://www.cnblogs.com/kongxianghai/p/3010565.html