本节课的理解
来源:6-1 原型继承
CoffeePlayer
2021-01-29 18:24:03
本节课感觉没怎么看懂,但是我按照对本节课的理解整理了一下笔记,请老师看一下我对本节课的理解是否正确。
任何函数内部都有一个prototype属性,这个属性以对象的形式存在,指向新建的Object对象。通过这个函数创建的每个对象,这些对象中都有一个__proto__属性,将__proto__属性指向这个函数的prototype.从而__proto__也指向Object对象
这个Person函数里有一个prototype属性,指向一个Object对象,通过Person函数创建的对象的步骤如下
1. 首先创建一个空对象 (var person = {})
2. person.__proto__ = Person.prototype
3. 初始化这个对象
此时这个链为
我感觉我这里的理解可能不正确,因为通过Person函数创建的对象
这里我认为prototype 和 __proto__指向的是一个Object对象,但打印出来发现好像是Person函数。
继承就是通过这种链实现的,可以通过__proto__属性或者prototype对象增加父类,并可以通过__proto__属性在父对象中声明相应的属性和方法,供子对象调用
这时这里的继承链如下
将Student所有对象的父对象都设置为person对象 ,如下
这时这个通过函数Student创建的所有对象的父对象都是person。
查找对象中的属性和方法时,在本对象中找不到时,会通过链查找父对象是否有相应的属性和方法,如果也找不到,再往上查找父对象,直到在Object对象中也找不到时,才会抛出异常。
2回答
同学你好,这次理解的没有问题,很棒!
祝学习愉快~
好帮手慕星星
2021-01-29
同学你好,问题解答如下:
1、关于第一部分理解有点问题
如下
所以这部分理解没问题
2、实例化对象的过程有问题并缺少一步
第一步和第二步是对的,第三步应该是改变this指向,将this指向实例化的对象,添加实例属性和方法;第四步是将实例化的对象赋值给变量person,也就是这一步的操作
3、第三部分理解的有问题,和上面的理解类似
4、第四部分不常用
5、第五部分可以描述完善一些
6、这部分理解没问题
祝学习愉快!
相似问题