原型链:
1.对象的属性__proto__指向构造函数的prototype; 2.最终原型Object.prototype,原型链的终点null; 3.对象的属性,如果对象本身自己有,优先使用自己的;如果没有,则沿着原型链逐层查找。 关系图:
这一张图比较准确(黑色实线代表相等):
代码验证:
<script type="text/javascript">
function fn(){};
var obj=new Object()
var arr=new Array()
var f1=new fn()
console.log(obj.__proto__,arr.__proto__)
console.log(arr.__proto__.__proto__===obj.__proto__)
console.log(obj.__proto__.__proto__)
console.log(f1.__proto__.__proto__===obj.__proto__)
</script>
结果:
注意:
同一个函数创建出来的对象们,具有相同的空间结构和功能;
每一个函数创建出来的对象是不相同的,有哪些构造函数?
1.自定义函数
2.官方提供的函数(系统内置功能):Function、String、Number、Bloolean、Object、Array、Date、Math