最近两天一直在看js中关于原型和原型链的内容,没有特别理解,但自己总结了一些基础知识点。
1.JS中万物皆对象,但是分为两大类,函数对象,普通对象
2.所有的函数对象都有一个prototype属性,这个属性引用了一个对象,即原型对象,也称原型。然而普通对象是没有prototype属性,只有_proto_属性
3.原型对象就是普通对象,(Function.prototype除外,因为它是函数对象,但比较特殊,因为没有prototype属性)
4.类实例对象的内部_proto_指向它构造函数的prototype
5.obj.constructor === A.prototype.constructor,就是说类的实例对象的constructor属性永远指向构造函数的prototype.constructor,即使A.prototype不再指向原来A的原型
6.obj.constructor.prototype === A.prototype。当A.prototype改变,则不成立
7.类继承:(JS中没有类,这里只是指构造函数)。虽然继承了A构造函数对象的所有属性方法,但不能继承A原型对象的成员,而要实现这个目的,就是在此基础上再添加原型继承
8.原型对象主要用于继承,JS在创建对象的时候,(不论是普通对象 还是函数对象),都有一个叫做_proto_的内置属性,用于指向创建它的函数对象的原型对象prototype
9.原型对象prototype中都有个预定义的constructor属性,用于引用它的函数对象。比如说:person.prototype.constructor === person。
10.Object.constructor === Function。如何查找一个对象的constructor,就是在该对象的原型链上寻找碰到的第一个constructor属性所指向的对象
11.原型和原型链是JS实现继承的一种模型
12.原型链的形成是靠_proto_,而不是prototype