函数可以封装任意多条语句,而且可以在任何地方、任何时候调用执行。
ECMAScript 中的构造函数本来是函数,但用来创建特定类型的对象。Object 和 Array 是原生构造函数。
构造函数命名始终是以大写字母开头,非构造函数应该以小写字母开头。
例: function Preson(name,age,job){
this.name = name;
this.age = age;
this.job = job;
this.sayName = function(){
alert(this.name);
};
}
var person1 = new Person("Nichilas",29,"Engineer");
var person2 = new Person("Greg",27,"Doctor");
创建Person 实例,必须使用 new 操作符。以这种方式调用构造函数实际上会经历4个步骤。
(1)创建一个新对象;
(2)将构造函数的作用域赋给新对象(因此this就指向了这个新对象);
(3)执行构造函数中的代码(为这个新对象添加属性);
(4)返回新对象。
将构造函数当做函数
构造函数和其他函数的唯一区别在于调用方式的不用。构造函数和其他函数的定义方法没有差异。
任何函数,如果使用 new 操作符来调用,那它就可以作为构造函数;而任何函数,如果不用 new 操作符调用,那它就跟普通函数没有区别。
其他构造函数的调用方式
//当做构造函数使用
var person = new Person("Nicholas",29,"Software Engineer",);
person.sayName(); //Nicholas""
//作为普通函数调用
Person("Gtreg",29,"Doctor");
window.sayName(); //Greg
//在另一个对象的作用域中调用
var o = new Object();
Person.call (o,"Kristen", 25 , "Nurse");
o . sayName(); //"Kristen"
网友评论