创建对象,可以通过字面量、关键字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 } });