1. 函数的prototype属性
- 每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象)
console.log(Array.prototype) //Array也是一个函数。实例化对象的方法都挂在原型对象上
- 原型对象中有一个属性constructor, 它指向函数对象本身
- constructor:声明当前的构造器,是当前函数本身。
fn.prototype.constructor === fn
2. 给原型对象添加属性(一般都是方法)
- 作用: 函数的所有实例对象自动拥有原型中的属性(方法)
function Person() {};
Person.prototype.age = 12;
Person.prototype.say = function() {
this.say = '你好'
}
// 创建函数的实例对象
var person1 = new Person();
console.log(person1.age); // 12
console.log(person1.say); // function() {this.say = '你好'}
3. 显示原型对象 / 隐式原型对象
// 显示原型对象 / 隐式原型对象
function Person() {}
console.log(Person.prototype) //Object(显示原型对象)
var person1 = new Person();// person1 是生成的实例对象。
console.log(person1)
// 1.每个实例对象身上都有一个_proto_,该属性指向当前实例对象的原型对象(隐式原型对象)
//2.构造函数的显示原型对象===(当前构造函数)实例对象的隐式原型对象
Person.prototype === person1._proto_;