函数的定义:
构造函数与普通函数唯一的区别就是调用方式不同:任何函数只要使用new操作符调用就是构造函数,而不是用new操作符调用的函数就是普通函数。
原型:每个函数都会创建一个prototype属性,它指向一个对象(原型),包含特定引用类型的实例共享的属性和方法。通过构造函数创造的对象的原型就是该构造函数的prototype(原型)对象.
ps:在firefox、safari、和chrome浏览器会在每个对象中暴露出__proto__属性(可称为隐式原型),这个属性访问其所在对象的原型。
在一般情况下某个实例对象的__proto__可视为链接到该对象构造函数的原型对象。
例
1 function Person(name, age, job) { 2 this.name = name; 3 this.age = age; 4 this.job = job; 5 this.introduce = function () { 6 console.log(`我是${name},我${age}岁`); 7 }; 8 } 9 let person1 = new Person("徐凤年", "22", "世子殿下"); 10 let person2 = new Person("温华", "22", "游侠"); 11 person1.introduce();//我是徐凤年,我22岁 12 13 console.log(Person.prototype); 14 console.log(person1); 15 16 console.log(person1.prototype !== Person); //true 17 console.log(person1.__proto__ === Person.prototype); //true 18 console.log(Person.prototype.constructor === Person); //true 19 console.log(Person.prototype !== Person); //true 20 console.log(person1.prototype === person2.prototype); //true 21 console.log(Person.prototype.__proto__ == Object.prototype);//true