function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.sayName = function() {
console.log(this.name);
};
}
var person1 = new Person("Neo", 29, "Teacher");
person1.sayName();
var person2 = new Person("Toby", 30, "Software Engineer");
person2.sayName();
console.log(person1 instanceof Object);
console.log(person1 instanceof Person);
上述代码输出结果:
- 将构造函数当做函数
我们可以将构造函数当做函数使用。实际上,不存在定义构造函数的特殊语法。任何函数,只要通过 new 操作符来调用,那它就可以作为构造函数;而任何函数,如果不通过 new 操作符调用,那它跟普通函数也不会有什么区别。
Person 构造函数的使用实例:
var person1 = new Person("Neo", 29, "Teacher");
person1.sayName();
var o = new Object;
Person.call(o, "Toby", 30, "Software Engineer");
o.sayName();
我们看到 Person 也和普通函数一样,也可以正常使用 call 方法。
- 构造函数的问题
使用构造函数的主要问题,就是就是每个方法都要在每个实例上重新创建一遍。例如 sayName() 方法其实就是每个实例上都有一个全新的不同的对象,这其实很没必要。要解决这个问题需要使用到我们接下来要了解的原型模式。