ECMAScript中的构造函数可以用来创建特定类型的对象。像Object和Arrray这样的原生构造函数,在运行时会自动出现在执行环境中。也可以自定义构造函数,用来自定义对象类型的属性和方法。
function Person(name,age,job) {
this.name = name;
this.age = age;
this.job = job;
this.sayName = function() {
console.log(this.name)
}
}
var person = new Person('marray','20','software engineer')
使用New操作符创建实例,以构造函数的方式创建实例会经历以下四步:
- 创建一个新对象
- 将构造函数的作用域赋给新对象
- 执行构造函数中的代码,为新对象添加属性
- 返回新对象
构造函数与普通函数的区别就在于调用方式不同,构造函数的调用方式有:
- 使用new操作符当做构造函数使用
- 不使用new操作符,作为普通函数使用
Person('jack',20,'doctor')//添加到window对象
window.sayName();
- 使用call()/apply()在另一个对象的作用域中使用
var obj = new Object();
Person.call(obj,'jim',21,'nurse')
obj.sayName();