05 函数的原型对象

1 函数的prototype属性

  • 每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象)
  • 原型对象中有一个属性constructor, 它指向函数对象
// 1 每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象)
function fun() {

}
console.log(fun.prototype)
// 2 原型对象中有一个属性constructor, 它指向函数对象
console.log(fun.prototype.constructor === fun) // true
  • 每个函数function都有一个prototype,即显式原型
  • 每个实例对象都有一个__proto__,可称为隐式原型
  • 对象的隐式原型的值为其对应构造函数的显式原型的值
// 1 每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象)
function fun() {

}
console.log(fun.prototype)
// 2 原型对象中有一个属性constructor, 它指向函数对象
console.log(fun.prototype.constructor === fun) // true

// 3 每个实例对象都有一个__proto__,可称为隐式原型
var f = new fun()
console.log(f.__proto__)
// 4 对象的隐式原型的值为其对应构造函数的显式原型的值
console.log(f.__proto__ === fun.prototype) // true
  • 函数的prototype属性: 在定义函数时自动添加的, 默认值是一个空Object对象
  • 对象的__proto__属性: 创建对象时自动添加的, 默认值为构造函数的prototype属性值
function Fn() {   // 内部语句: this.prototype = {}

}
// 创建实例对象
var fn = new Fn()  // 内部语句: this.__proto__ = Fn.prototype
Jietu20210315-214548.jpg
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容