js-原型与原型链

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_;
原文地址:https://www.cnblogs.com/maizilili/p/12367755.html