js中创建对象的几种方式

1.工厂模式

function createPerson(name){
   //1、原料
    var obj=new Object();
   //2、加工
    obj.name=name;
    obj.showName=function(){
       alert(this.name);
    }     
    //3、出场
     return obj; 
} 
var p1=createPerson('小米');
p1.showName();

优点:解决了创建相似对象的问题

缺点:并不能zhi知道一个对象的lei'类型

2.构造函数

function CreatePerson(name){
  this.name=name;
  this.showName=function(){
    alert(this.name);
  }
}
    var p1=new CreatePerson('小米');

优点:可以将一些实例表示为一种特定的类型

缺点:方法会在每个实例上都重新创建一遍遍

3.原型

function Person(){}
Person.prototype.name="小米";
Person.prototype.showName=function(){
alert(this.name);
}
var p1=new Person();
p1.showName();

优点:属性和方法定义在原型上 ,故每个实例可以共享属性和方法

缺点:实例的属性不能私有化

4.混合式(构造函数+原型)

function CreatePerson(name){
  this.name=name;
}
  Create.prototype.showName=function(){
    alert(this.name);
  }
    var p1=new CreatePerson('小米');
    p1.showName();
   var p2=new CreatePerson('小米');
    p2.showName();
  alert(p1.showName==p2.showName);//true;原因:都是在原型下面,在内存中只存在一份,地址相同

通过构造函数来定义属性,原型来定义方法和共享的属性。

5.字面量

person={
  name:"小米",
  age:23
};

猜你喜欢

转载自blog.csdn.net/qq_25461519/article/details/81075075