JS原型链

123 阅读1分钟

原型链:

1.对象的属性__proto__指向构造函数的prototype; 2.最终原型Object.prototype,原型链的终点null; 3.对象的属性,如果对象本身自己有,优先使用自己的;如果没有,则沿着原型链逐层查找。 关系图:

image.png

这一张图比较准确(黑色实线代表相等):

image.png 代码验证:

  <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>

结果:

image.png

注意:

同一个函数创建出来的对象们,具有相同的空间结构和功能;
 
每一个函数创建出来的对象是不相同的,有哪些构造函数?
     1.自定义函数
     2.官方提供的函数(系统内置功能):FunctionStringNumberBlooleanObjectArrayDateMath