javascript创建对象的10种模式

第1种:对象字面量

//对象字面量(速度快,推荐使用)
var animal = {property: "都要呼吸", getProperty: function(){return this.property;}};
var person = {feature: "直立行走", getFeature: function(){return this.feature;}};

第2种:Object构造函数

var animal = new Object();
animal.property="都要呼吸";
animal.getProperty=function(){return this.property;}
var person = new Object();
person.feature="直立行走";
person.getFeature = function(){return this.feature;}

第3种:工厂模式

function createAnimal(){var animal=new Object();animal.property="都要呼吸";animal.getProperty=function(){return this.property;} return animal;}
function createPerson(){var person=new Object();person.feature="直立行走";person.getFeature=function(){return this.feature;} return person;}
var animal = createAnimal();
var person = createPerson();

第4种:构造函数模式

function Animal(){this.property="都要呼吸";this.getProperty=function(){return this.property;};}
function Person(){this.feature="直立行走";this.getFeature=function(){return this.feature;};}
var animal = new Animal();
var person = new Person();

第5种:原型模式

function Animal(){}
Animal.prototype.property="都要呼吸";
Animal.prototype.getProperty=function(){return this.property;}
function Person(){}
Person.prototype.feature="直立行走";
Person.prototype.getFeature=function(){return this.feature;}
var animal=new Animal();
var person=new Person();

第6种:组合使用构造函数模式和原型模式

function Animal(){this.property="都要呼吸";}
Animal.prototype.getProperty=function(){return this.property;}
function Person(){this.feature="直立行走";}
Person.prototype.getFeature=function(){return this.feature;}
var animal=new Animal();
var person=new Person();

第7种:动态原型模式

function Animal(){
this.property="都要呼吸";
if(typeof this.getProperty!="function"){
Animal.prototype.getProperty=function(){return this.property;}
}}
function Person(){
this.feature="直立行走";
if(typeof this.getFeature!="function"){
Person.prototype.getFeature=function(){return this.feature;}
}}
var animal=new Animal();
var person=new Person();

第8种:寄生构造函数模式

function Animal(){this.property="都要呼吸";this.getProperty=function(){return this.property;};}
function Person(){var animal=new Animal();animal.property="直立行走";return animal;}
var person=new Person();

第9种:稳妥构造函数模式

function Animal(){var animal=new Object();var property="都要呼吸";animal.getProperty=function(){return property;} return animal;}
function Person(){var person=new Object();var feature="直立行走";person.getFeature=function(){return feature;} return person;}
var animal=Animal();
var person=Person();

第10种:Object.create()

var person={feature: "直立行走", getFeature: function(){return this.feature;}}
var p1=Object.create(person);