1. JS相关
1 .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