原型 prototype

JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的所拥有

这也就意味着,我们可以把所有对象实例需要共享的属性和方法直接定义在 prototype 对象上

function Person (name, age) {
  this.name = name
  this.age = age
}

console.log(Person.prototype)

Person.prototype.type = 'human'

Person.prototype.sayName = function () {
  console.log(this.name)
}

var p1 = new Person(...)
var p2 = new Person(...)

console.log(p1.sayName === p2.sayName) // => true

任何函数都具有一个 prototype 属性,该属性是一个对象。

<p class="tip"> __proto__ 是非标准属性。</p>

实例对象可以直接访问原型对象成员。

总结:简单来说,原型是对象的函数或者属性,添加原型,在内存中只会存在一个

原文地址:https://www.cnblogs.com/KcBlog/p/13817409.html