本节课的理解
本节课感觉没怎么看懂,但是我按照对本节课的理解整理了一下笔记,请老师看一下我对本节课的理解是否正确。
任何函数内部都有一个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对象中也找不到时,才会抛出异常。
正在回答
同学你好,这次理解的没有问题,很棒!
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星