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