不懂 什么呀 乱七八糟的

不懂 什么呀 乱七八糟的

一.

1.f._proto_ ===Foo.prototype 这个懂

2.Foo.prototype.__proto_即 f._proto.__proto_为什么等于Object.prototype ?????

二.

1.function Foo() 等于 var Foo = new Function

              Function.prototype等于Foo._proto_


2.var f = new Foo   

               f._proto_等于 Foo.prototype

3.为什么一个函数的原型上还可以再._proto_?

4.原型上的原型?

5.并且为什么函数原型上的隐式原型等于Object的显示原型?

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

登陆购买课程后可参与讨论,去登陆

2回答
慕移动3569406 2020-06-26 23:03:05

其他的问题看不太懂, 但是第一个可以回答你。 就像老师那样, 将Function.prototype打印出来就知道了,JS就是这样设计的,应该没什么好说的。 之所以这样设计,是为了所有的对象都可以使用toString\valueOf诸如此类的方法(如果展开Object.prototype就可以看到这些方法)。

可以认为Object.prototype就是最顶级的抽象层(我这里指的抽象不要理解成计算机词汇)

如果实在难以理解, 可以看到Function.prototype其实就是一个对象, 那对象肯定不是无缘无故产生的,一定有他的来由,这个来由就默认是Object,也就是说Function默认使用Object构造函数来创造的,所以Function.prototype的__proto__指向的是Object.prototype。 

  • 【编辑后】其他的问题看不太懂, 但是第一个可以回答你。 就像老师那样, 将Function.prototype打印出来就知道了,JS就是这样设计的,应该没什么好说的。 之所以这样设计,是为了所有的对象都可以使用toString\valueOf诸如此类的方法(如果展开Object.prototype就可以看到这些方法)。 如果实在难以理解, 可以看到Function.prototype其实就是一个对象, 那对象肯定不是无缘无故产生的,一定有他的来由,要借助构造函数来实例化。而这个构造器默认使用Object来创建,也就是说Function.prototype的这个对象,使用Object构造函数来进行实例化的,所以Function.prototype的__proto__指向的是Object.prototype。
    2020-06-26 23:07:05
好帮手慕星星 2020-04-29 10:36:16

同学你好,问题解答如下:

1、函数原型上的隐式原型等于Object的显示原型。例如

http://img1.sycdn.imooc.com//climg/5ea8e41109a3255f05750168.jpg

http://img1.sycdn.imooc.com//climg/5ea8e42d09330e5c05710374.jpg

http://img1.sycdn.imooc.com//climg/5ea8e440093894be08610711.jpg

两个是相等的

http://img1.sycdn.imooc.com//climg/5ea8e44b0902022f01560031.jpg

记住这个原理就好。

2、看一下课程中的例子

http://img1.sycdn.imooc.com//climg/5ea8e4ce09ab5db704390143.jpg

http://img1.sycdn.imooc.com//climg/5ea8e4bf0932468505610443.jpg

第一个__proto__是通过prototype属性添加的。所以是再往下面找__proto__就是相等的

http://img1.sycdn.imooc.com//climg/5ea8e4fc09affff306320035.jpg

http://img1.sycdn.imooc.com//climg/5ea8e50809e5279a01160031.jpg

3、 f._proto_等于 Foo.prototype这个应该好理解,函数通过prototype属性添加的内容,会显示在实例化对象的__proto__属性上。

http://img1.sycdn.imooc.com//climg/5ea8e5e509dbf98005260201.jpg

http://img1.sycdn.imooc.com//climg/5ea8e5ff096bf7b004820444.jpg

4、创建函数的__proto__属性与Function函数的prototype相等,和上面回答的第三个是一样的,通过new Function()实例化出来的

http://img1.sycdn.imooc.com//climg/5ea8e810090603cb05740087.jpg

http://img1.sycdn.imooc.com//climg/5ea8e81709fea5da01470031.jpg

自己再测试理解下,祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师