创建对象之构造函数模式

来源:互联网 发布:行知中学住宿条件 编辑:程序博客网 时间:2024/06/06 15:53

1,内置的构造函数

在ECMAScript5中内置了以下几种构造函数

    String     Number     Boolean     Object     Function     Array     Date     RegExp     Error    var str=new String("hello");    console.log(str);        /*String        0: "h"        1: "e"        2: "l"        3: "l"        4: "o"        length: 5        __proto__: String        [[PrimitiveValue]]: "hello"*/    console.log(typeof str);//Object

通过内置的构造函数可以创建特定的对象。

当然此外,也可以创建自定义的构造函数,从而定义自定义对象类型的属性和方法。

2,通过自定义的构造函数创建对象

    function Person(job,name,age){        this.job=job;        this.name=name;        this.age=age;    }    var person1=new Person("cooder","bee",20);    var person2=new Person("star","song",27);

person1和person2是通过Person构造函数创建出来的对象。Person构造函数和普通的函数是一样的,只不过调用的方式不一样而已。
上面创建对象的过程经过下面4个步骤:
1,创建一个新对象
2,把this指向这个新对象。
3,执行构造函数中的代码
4,返回新对象。

person1和person2都是构造函数Person的实例。二者都有一个属性指向构造函数。

    console.log(person1.constructor);    console.log(person2.constructor);    /*function Person(job,name,age){        this.job=job;        this.name=name;        this.age=age;    }*/

这个属性并不是在person1和person2自身上面,而是在他们的原型上面。是通过原型链访问到这个属性的。

但是通过构造函数模式,创建对象,如果对象上面有方法,那么这些方法会在每个原型上创建一遍。

0 0