关于原型问题
麻烦老师讲解下__proto__、prototype、constructor这三者的关系,还有,Function.prototype和Object.prototype有什么关系?
正在回答
同学你好,可以这样理解的。祝学习愉快 ~
同学你好,那要问Object和Function的关系哦。参考如下理解:
1.要看一下 instanceof 规则。例如 A instanceof B , 如果B在A的原型链中被发现,那么instanceof操作符将返回true,否则返回false。
在js中,所有对象的原型链根节点都是Object。例如如下:
数组和函数也可以叫做对象。原型链就是说,一个原型里面包含另一个原型,这样一层一层的形参了原型链
可以输出一下,顺着原型链找到最后一个原型,发现都是Object
所以任意一个对象使用instanceof测试,返回的都是true。Function本身也是一个对象,所以返回的是true。
2.Object, Function等等这些都被称作是构造函,而所有的函数都是构造函数Function的实例。那么根据实例化的角度讲,只要顺着实例化对象Object原型链,就能找到创建它的Function构造函数。所以使用instanceof 去检测,也返回true。
可以看一下:
所以Object.__proto__.constructor==Function 。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
同学你好,问题解答如下:
1.prototype是构造函数上的属性,而__proto__是实例化对象的属性。例如如下:
Person是构造函数,p是实例化对象。Person实例化之后,实例化对象p上的__proto__会继承构造函数Person的prototype。所以Person.prototype==p.__proto__ 。
可以输出一下,返回true,说明它们相等:
2.constructor(构造器)属性是原型对象上面的,它指向的就是构造函数。例如输出如下:
返回true,说明Person原型对象上面的constructor属性指向的就是构造函数Person:
3.Function.prototype是Function对象上的属性,Object.prototype是Object对象上的属性,Object和Function是js规定好的构造函数(构造函数也可以叫做对象),两个构造函数上各自的prototype没有关系。
输出false:
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星