直接引用JavaScript高级程序设计里的,因为里面已经写的很好了,这里只是自己的一个梳理笔记
字面量与new Object()
var a = {}var b = new Object()两种方式等价
适合场景:创建属性不相同的单个对象,字面量是new Object()的简写
缺陷:使用同一个接口创建很多对象(属性相同的),会产生大量的重复代码
工厂模式
function createPerson(name, age, job){var o = new Object()o.name = nameo.age = ageo.job = jobo.sayName = function(){alert(this.name)}return o}var person = createPerson('Nicholas', 29, 'Software Engineer')
适合场景:重复创建多个相同属性的独立对象,工厂模式解决了创建多个相似对象
缺陷:对象类型无法识别,因为实例全部指向一个原型(Object.prototype)
构造函数模式
function Person(name, age, job){this.name = namethis.age = agethis.job = jobthis.seyName = function(){alert(this.name)}}var person = new Person('Nicholas', 29, 'Software Engineer')
适合场景:与工厂模式很类似创建多个相似对象,不过解决了对象类型识别的问题,