请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

函数包括_proto_又包括prototype,不是很理解

你说的引用类型包括数组、对象、函数fn,你刚刚演示的其中fn又有_proto_,而所有的函数又有prototype,不矛盾吗?怎么区分

正在回答 回答被采纳积分+3

2回答

兮漫天 2019-04-26 23:08:41

函数都有隐式原型__proto__ 和显式原型 prototype

对象,我这指的对象 就是你说的引用类型 数组 对象 函数的实例 [] {} function(){}  它们只有__proto__ 隐式原型,并没有显式原型!引用类型的目的就是为了通过引用来提高性能!而引用类型的体现就是隐式原型,它指向的是它对应的构造函数的原型对象(也就是prototype 这个显式原型).

打个比方,有三个实例,爷爷,爸爸,儿子!儿子要使用一个方法,它会先在自己的prototype里面找,是不是有这个方法,咦,咋没有,好吧,那我去爸爸那里找,怎么找呢?它就通过它自身的__proto__去找到它爸爸的prototype,看里面是否有它要的方法,咦,咋还是没有呢,行,那再顺着它爸爸的__proto__去找它爷爷的prototype,如果还没找i到,继续往上找,直到找到,找不到就null....(这也是原型链的一种体现)

这是__proto__ 和 prototype 的作用,也就是当初定义的其中一个边界概念!

总之你记住一点!任何的实例对象,都是由它的构造函数创建的实例!你要了解什么是构造函数,什么是实例,它们之间的关系!

了解了它们之间的关系以后,进一步你就会发现,构造函数里面既有__proto__ 又有prototype 而实例里面,只有隐式原型 __proto__ !__proto__和prototype 之间 就是这样的一个相互的三角关系!这也就是老师说的 它在js中的特殊作用,不知道我粗浅的解释是否帮到你!

0 回复 有任何疑惑可以回复我~
  • 补充一点在JavaScript里面函数本质也是一种对象,所以构造函数Function()的__proto__指向它自己的prototype
    回复 有任何疑惑可以回复我~ 2019-05-27 14:08:55
双越 2018-09-17 12:34:00

不矛盾啊。例如 var obj = {a: 10, b: 20}; 我说 obj 既有 a 属性又有 b 属性,矛盾吗?跟你提问的道理是一样的,__proto__ 和 prototype 仅仅是两个普通的属性值而已,只不过它对于 JS 来说有特殊的作用,本质上还是两个属性。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信