可以通过对象直接量、关键字new和(E5)Object.create()函数来创建对象
1. 对象直接量
由若干名/值对组成的映射表
属性名可以是JS标识符也可以是字符串直接量(包括空空字符串)
属性值可以是任意类型的JS表达式,表达式的值(原始值也可以是对象值)就是这个属性的值
2. 通过new创建对象
3. 原型
每一个对象都从原型继承属性。
没有原型的对象:Object.prototype
创建对象 |
原型 |
对象直接量创建对象 |
Object.prototype |
通过new创建对象 |
构造函数的prototype属性 |
通过Object.create()创建对象 |
使用第一个参数 |
4. Object.create()
创建一个新对象,其中第一个参数是这个创建对象的原型。第二个可选参数,用以对对象的属性进行进一步描述。
Object.create(null); //不继承任何属性和方法
Object.create(Object.prototype); //和{}、new Object()一样
//返回了一个继承自原型对象p的属性的新对象 function inherit(p) { if(p==null) throw TypeError(); //p是一个对象,但不能是null if(Object.create) { //如果Object.create属性存在 return Object.create(p); } var type = typeof p; //否则进行进一步检测 if(type !== 'object' && t !== 'function') throw TypeError(); function f() {} //定义一个空构造函数 f.prototype = p; //继承对象p的属性 return new f(); //返回p的子对象f(继承对象) }