浅谈JS中的原型对象和原型链

匿名 (未验证) 提交于 2019-12-03 00:39:02

我们知道原型是一个对象,其他对象可以用它实现属性继承,除了prototype,又有__proto__

1. prototype和__proto__的区别

prototype是函数

2. __proto__属性指向谁?

__proto__的指向取决于对象创建时的实现方式。

var a = {}

var a1 = {}

var a2 = Object.create(a1);

什么是原型链?

由于__proto__是任何对象都有的属性,而js里万物皆对象,所以会形成一条__proto__连起来的链条,递归访问__proto__必须最终到头,并且值是null.

当js引擎查找对象的属性时,想查找对象本身是否存在该属性,如果不存在,会在原型链上查找,但不会查找自身的perototype

var A = function(){};

var a = new A();

var A = function(){}; var a = new A(); console.log(a.__proto__);   // A{}(即构造器function A的原型对象) console.log(a.__proto__.__proto__); // Object{}(即构造器function Object的原型对象) console.log(a.__proto__.__proto__.__proto__); //null

原文:https://www.cnblogs.com/mikeCao/p/9271464.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!