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

 

你可能感兴趣的:(JavaScript)