小白看完一些文章有点晕,其中不理解的一个问题就是比如person.__proto__是 Person.prototype那么Person.__proto__是Function.prototype 这是为何。 那么Fuction.prototype算原型链中的一步吗? 函数对象和普通对象有点分不清。求点醒。
2 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
1、首选__proto__是浏览器厂商实现的,W3C规范中并没有这个东西。
2、它的作用就是访问对象的原型。
3、对于js来说,一切皆对象,尤其是引用类型,更是如此。
4、所有的对象都有一个原型(null除外),函数是对象,那么函数也不例外。所以Person.__proto__就是访问这个构造函数的原型。
5、每一个函数都有一个prototype属性,属性的值也是一个对象,称为原型对象。所以Person.prototype访问的就是这个Person类的原型对象。
6、抛开__proto__来说,通过属性访问Person的原型可以这样写:Person.constructor.prototype。也就是说Person.contractor.prototype === Person.__proto__ //true;
7、假如实例化Person,var p = new Person();综上所述,p.constructor === Person // true; p.constructor.prototype === Person.prototype // true;
不知道这样解释能理解嘛。
添加回答
举报
0/150
提交
取消