老师同学们来看看我的理解!!!

老师同学们来看看我的理解!!!

所有的引用类型都有一个__proto__属性且值为一个对象。这一点我感觉和对象的创建有关!!!且听我细细说来!

  1. let arr=[]等于new Array()    let  obj={}等于new Object()  obj=new Fun()他们本质都相同都是通过一个函数创建一个对象实例。

  2. 而函数(前面我们已经知道Array,Object,Function等都是JS内置函数)都有一个显示原型prototype也就是原型对象(老师在第三点钟说过!)。我们创建实例的过程是这样的:2-1:以函数的原型对象prototype为原型创建一个对象(这点很重要!!)2-2:把函数的this赋值给这个对象,然后运行函数。2-3:若函数有返回值,且返回值为引用类型则返回这个引用值(不会返回我们创建的这个对象!!)否则返回this(用prototype为原型创建的这个对象)。

  3. 所以有了以下结果:当我们 let a=[]  时 a 实际上是 Array.prototype为原型创建的 a的__proto__===Array.prototype!!。与老师在第四点中说过:“所有引用类型的__proto__属性都指向他的构造函数的prototype属性”不谋而合

4.举个栗子:

 function Fun(name){

            this.name=name;

        }

        Fun.prototype.age=18;

        let foo=new Fun('zhangsan');


        console.log(Fun.prototype)  //{age:18,constructor:f}

        console.log(foo.__proto__===Fun.prototype)   //true

        console.log(foo.age)  //18

4-1由第一次打印可以知道函数的prototype确实是一个对象。内含constructor属性是一个函数这个函数就是Fun本身!这个对象也含有__protot__属性指向Object.prototype原理可以由上面几点得知!

4-2由第二次打印可以知道__proto__也是一个对象,并且确实指向他的构造函数的prototype属性。

4-3印证了老师的第五点:获取属于在对象中不存在时,会去他的__proto__属性中查找。而__proto__属性也就是构造函数的prototype属性。所有也就是去prototype中查找。

5.有点问题还不太清除我们说的原型是否就是:prototype.原型链就是__proto__?

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

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

3回答
慕移动3569406 2020-06-26 19:23:15

我觉得同学是想表达Object.create(构造函数的prototype),创建出来的空对象。  感觉跟老师说的是同一个意思。

好帮手慕慕子 2020-06-16 19:09:09

同学你好,js面向对象是在第二阶段学习的,时间有点久,同学可能记错了,在前面的课程中老师有详细的讲解使用new关键字实例化对象的过程,同学可以回顾下,加深记忆和理解

https://class.imooc.com/lesson/502#mid=11844 

祝学习愉快~

好帮手慕慕子 2020-06-16 14:33:37

同学你好,整体理解都是对的思路梳理的很棒

但是如下图所示部分的理解有一点误差

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

使用new创建一个实例的过程,是先创建一个空对象,让这个对象的__proto__属性指向构造函数的原型对象prototype。可以参考老师在同学的另一个提问下给出示例图理解,如下:

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

对于同学的最后一点疑问,同学理解也是对的,原型指的就是prototype, 原型链指的是_proto__

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 功不唐捐终入海 #1
    我这个记得是一个老师给我说的,用构造函数的prototype为原型创建一个空对象。。
    2020-06-16 18:57:59
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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