学JavaScript 三 面向对象的程序设计 创建对象

创建对象的几种方式:

  • 工厂模式
function createPerson(name,age){
    var o = new Object();
    o.name = name;
    o.age = age;
    o.sayName =function(){
        alert(this.name)
    }
    return o;
}
var person1 = new createPerson("Jack",15);
var person2 = new createPerson("Jacks",159);

工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题。

  • 构造函数模式
function Person(name,age){
    this.name = name;
    this.age = age;
    this.sayName =function(){
        alert(this.name)
    };
}
var person1 = new Person("Jack",15);
var person2 = new Person("Jacks",159);

Person()函数取代了createPerson()函数。Person()创建对象的方式有以下几点与createPerson()不同之处

  1. 没有显示的创建对象
  2. 直接降属性和方法赋给了this对象。
  3. 没有return语句。

创建Person对象的新实例,必须使用new操作符。以这种方式调用构造函数实际上会经历以下4个步骤

  1. 创建对象
  2. 将构造函数的作用域赋给新对象(因此this就指向了这个新对象)
  3. 执行构造函数中的代码(为这个对象添加属性)
  4. 返回新对象

创建自定义的构造函数意味着将来可以将它的实例标识为一种特定的类型;而这正是构造函数模式胜过工厂模式的地方。

posted @ 2016-09-27 14:27  小严  阅读(70)  评论(0)    收藏  举报