Javascript 面向对象编程:用构造函数模式创建对象

       在ECMAScript中的构造函数可用来创建特定类型的对象,想Object和Array这样的原生构造函数,在运行是会自动出现在执行环境中。因此,可以创建自定义的构造函数,从而定义对象类型的属性和方法。

      1、如下例子,使用构造函数创建原型对象:

function Person(name,age){
    this.name=name;
    this.age=age;
               this.sayName = function(){alert(this.name)};
  }

         注意:

                 1)、函数名Person使用的是大写字母P;

                 2)、构造函数本身也是函数,之不过可以用来创建对象而已。

    2、要创建Person的新实例,必须使用new操作符:

var person1 = new Person("zhangsan",20);
var person2 = new Person("lisi",21);
alert(person1.name); 
alert(person1.age); 

         调用构造函数会经历一下4个步骤:

         1)、创建一个新的对象;

         2)、将构造函数的作用域赋给新对象;

         3)、执行构造函数中的代码;

         4)、返回新对象。

3、将构造函数当作函数:构造函数与其他函数的唯一区别,就在于调用它们的方式不同,不过构造函数毕竟也是函数,不存在定义构造函数的特殊语法。

      1)、当作构造函数使用:

var person = new Person("zhangsan",20);  
person.sayName();    //"zhangsan"

     展示了构造函数的典型用法,即使用new操作符来创建一个新对象。

        2)、作为普通函数使用:

Person("lisi", 21);          //添加到window
window.sayName();          //"lisi"

     展示了不使用new操作符调用Person()会出现什么结果:属性和方法都被添加给window对象了。

       3)、在另一个对象的做的作用域中调用:

var a = new Object();
Person.call(a, "zhangsan", 20);
a.sayName();                        //"zhagnsan"

     使用call()在某个特殊的对象的作用域中调用Person()函数。

猜你喜欢

转载自qiannianhua.iteye.com/blog/2257989