原型链
2018-05-09 本文已影响0人
zhangjingbibibi
- 原型链
- 访问一个对象的属性时:
- 先在自身属性中查找,找到返回
- 如果没有,再沿着proto这条链向上查找,找到返回
- 如果最终没找到,返回undefined
- 别名:隐式原型链
- 作用:查找对象的属性(方法)
-
构造函数/原型/实体对象的关系(图解)
var o1=new Object();
var o2={};
image.png -
构造函数/原型/实体对象的关系2(图解)
function Foo(){}
image.png
// console.log(Object)
//console.log(Object.prototype)
console.log(Object.prototype.__proto__) //输出null
function Fn() {
this.test1 = function () {
console.log('test1()')
}
}
console.log(Fn.prototype);
Fn.prototype.test2 = function () {
console.log('test2()')
}
var fn = new Fn()
fn.test1()
fn.test2()
console.log(fn.toString())
console.log(fn.test3)
// fn.test3()
原型链分析.png
/*
1. 函数的显示原型指向的对象默认是空Object实例对象(但Object不满足)
*/
console.log(Fn.prototype instanceof Object) // true
console.log(Object.prototype instanceof Object) // false
console.log(Function.prototype instanceof Object) // true
/*
2. 所有函数都是Function的实例(包含Function)
*/
console.log(Function.__proto__===Function.prototype)
/*
3. Object的原型对象是原型链尽头
*/
console.log(Object.prototype.__proto__) // null