JavaScript构造函数,原型对象理解

时间:2022-08-24 23:13:02
构造函数名首字母要大写; 使用new操作符来调用构造函数,并返回对象的实例; 构造函数内部使用this指代对象的实例; 原型对象可以理解为java中的父类; 构造函数的缺点: 所有实例对象都可以继承构造函数中定义的属性和方法,但是却不能共享,比如: JavaScript构造函数,原型对象理解
为了解决各个实例对象之间的方法或属性共享,js提供了prototype属性 对于构造函数而言,prototype是构造函数的一个属性,对于对象实例来说,prototype是对象实例的原型对象;所以prototype既是属性又是原型对象; 原型对象的属性不是对象实例的属性。对象实例的属性是构造函数的属性; JavaScript构造函数,原型对象理解 通过原型对象,可以在多个对象实例之间共享属性和方法; 原型链:JavaScript构造函数,原型对象理解
读取对象的某个属性时,JavaScript引擎会优先去寻找实例对象自身的属性,如果找不到就到它的原型去找,还是找不到就到它的原型的原型去找,以此类推,直到到达最顶端的Object.prototype还是找不到则返回undefined;如果对象自身和它的原型都定义了相同名称的属性,那么优先读取对象自身的属性,类似java中的覆盖一级级在原型链中寻找某个属性对性能是有一定的影响的,如果寻找一个不存在的属性,将会遍历整个原型链;constructor属性:constructor是prototype的一个属性,默认指向prototype对象所在的构造函数;注意:prototype是构造函数的属性,而constructor是prototype的属性,constructor又指向了prototype所在的构造函数;由于constructor是定义在原型对象prototype上的,所以constructor可以被所有实例对象继承;一个函数或方法,都有prototype属性,prototype下面都有constructor属性,而且constructor属性值都指向了该函数或方法;JavaScript构造函数,原型对象理解JavaScript构造函数,原型对象理解
个人理解,有不对的地方,欢迎大家指出,共同学习!

JavaScript构造函数,原型对象理解