javascript 高级程序设计 十

理解JS对象(2)创建对象

JS中创建对象的方式有很多,我们把他们统称为模式。

工厂模式

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

  缺点:没有解决对象识别问题。(不知道一个实例对象的类型)

function createPerson(name, age, work){
  var o = new Object();
  o.name = name;
  o.age = age;
  o.work = work;
  o.sayName = function(newName){
    alert(this.name);
  }
  return o;
}
var person1 = createPerson('kim',1,'engineer');
person1.sayName();

 构造函数模式:

优点:创建自定义的构造函数意味着将来可以将他的实例标示为一个特定的对象。

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

function Person(name, age, job){
  this.name = name;
  this.age = age;
  this.job = job;
  this.sayName = function(){
    alert(this.name);
  }
}
var person1 = new Person('jim',1,'doctor');
var person2 = new Person('tom', 2, 'teacher') ;
person1.sayName();//jim
person2.sayName();//tom

  要想不重复定义方法,可以把方法提出来作为一个全局的方法,在构造函数中调用函数的指针。

原型模式:(****)

优点:可以让所有对象实例共享它所包含的属性和方法。

这个模式很重要我下一节再详细的讲解。