JS创建对象的各种方法

来源:互联网 发布:青铜 知乎 编辑:程序博客网 时间:2024/05/22 03:25

JS创建对象的几种方法

  • 原始方式(对象字面量)
var person={    age: 18,    name: "jack",    sayName: function(){        alert(this.name);    }}
  • 原始方式(Object构造函数)
var person=new Object();person.age=18;person.name="jack",person.sayName=function(){    alert(this.name);}
  • 工厂模式(定义一个函数创造对象)
function createObj(name,age){    var person=new Object();    person.age=age;    person.name=name;    person.sayName=function(){        alert(this.name);    }    return person; }
  • 构造函数模式(为对象定义一个构造函数)
function Person(name,age){    this.age=age;    this.name=name;    this.sayName=function(){        alert(this.name);    }}
  • 原型模式(直接定义prototype属性)
    当为对象实例添加一个属性的时候,这个属性就会屏蔽原型对象中保存的那个同名属性,但不会修改那个属性,可以使用delete删除实力属性,从而可以重新访问原型中的属性
function Person(){    person.prototype.age=18;    person.prototype.name="Jack";    person.prototype.sayName=function(){        alert(this.name);    }}var p1=new Person();var p2=new Person();p1.name="Nicholas";alert(p1.name);//Nicholasalert(p2.name);//Jack
  • 原型模式(对象字面量方式)
function Person(){    person.prototype={        name: "Jack",        age: 18,        sayName: function(){            alert(this.name);        }    }}var p1=new Person();var p2=new Person();
  • 混合模式(构造函数+原型)
fucntion Person(name,age){    this.name=name;    this.age=age;    }Person.prototype={    home: ["shanghai","beijing"],    sayName: function(){        alert(this.name);    },    sayAge: function(){        alert(this.age);    }};var p1=new Person("Jack",18);var p2=new Person("Mary",20);  
1 0