JavaScript中子对象访问父对象的方式详解
在传统面向对象的编程语言里,都会提供一种子类访问父类的特殊语法,引文我们在实现子类方法往往需要父类方法的额外辅助。在这种情况下,子类通常会调用父类中的同名方法,最终以便完成工作。
javascript虽然没有类似上述的特殊语法,但我们可以造一个啊!
functionher(){}; her.prototype.name='Anna'; her.prototype.toString=function(){ varconst=this.constructor; returnconst.uber?this.const.uber.toString()+','+this.name:this.name; } functionhis(){}; varF=function(){}; F.prototype=her.prototype; his.prototype=newF(); his.prototype.constructor=her; his.uber=her.prototype; his.prototype.name='Jock'; functionchild(width,height){ this.width=width; this.height=height; } varF=function(){}; F.prototype=his.prototype; child.prototype=newF(); child.prototype.constructor=child; child.uber=his.prototype; child.prototype.name='Los'; child.prototype.getArea=function(){ returnthis.width*this.height; }
我们在构建关系的过程中,我们引入了一个uber属性,并令其指向父及对象。
在这里,我们更新了以下内容:
1.将usber属性设置成指向父对象的引用;
2.对toString()方法进行了更新;
之前的toString()方法只是简单的返回this.name,现在我们给他添加了额外的任务,就是检查this.constructor.usber属性,如果存在就调用该属性的toString()方法。
由于this.constructor本身是一个函数,而this.constructo.usber是指向当前对象父级原型的引用,所以我们调用child实体的toString()方法时,其原型链上的toString()方法都会被调用。
varmy=child(1,2); my.toString()//Anna,Jock,Los
以上所述是小编给大家介绍的JavaScript中子对象访问父对象的方式详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!