原型链
- 原型链(图解)
- 访问一个对象的属性时,先在自身属性中查找,找到返回
- 如果没有,再沿着__proto__这条链向上查找,找到返回
- 如果最终没找到,返回undefined
- 别名:隐式原型链
- 作用:查找对象的属性(方法)
- 构造函数/原型/实体对象关系(图解)
- 构造函数/原型/实体对象关系2(图解)
(函数都是大写的Function,所以他们的隐式原型属性都是一样的)
例子:
(过程及结果)
例子:
<script>
function Fn() {
this.test1 = function() {
console.log('test1()')
}
console.log(this)
}
Fn.prototype.test2 = function() {
console.log('test2()')
}
var fn = new Fn()
fn.test1()
fn.test2()
console.log(fn.toString())
fn.test3()
</script>
总结:
- 函数的显式原型指向的对象默认是Object实例对象(但Object不满足)
- 所有函数都是Function的实例(包含Function)
- Object的原型对象是原型链尽头
实例对象的隐式原型等于构造函数的显式原型
原型继承
- 构造函数的实例对象自动拥有构造函数原型对象的属性(方法)
- 利用的就是原型链