JavaScript中子对象访问父对象的方式详解


Posted in Javascript onSeptember 01, 2016

在传统面向对象的编程语言里,都会提供一种子类访问父类的特殊语法,引文我们在实现子类方法往往需要父类方法的额外辅助。在这种情况下,子类通常会调用父类中的同名方法,最终以便完成工作。

javascript虽然没有类似上述的特殊语法,但我们可以造一个啊!

function her(){};
her.prototype.name = 'Anna';
her.prototype.toString = function(){
var const = this.constructor;
return const.uber ? this.const.uber.toString() + ',' + this.name : this.name;
}
function his(){};
var F = function(){};
F.prototype = her.prototype;
his.prototype = new F();
his.prototype.constructor = her;
his.uber = her.prototype;
his.prototype.name ='Jock';
function child(width, height){
this.width = width;
this.height = height;
}
var F = function(){};
F.prototype = his.prototype;
child.prototype = new F();
child.prototype.constructor = child;
child.uber = his.prototype;
child.prototype.name = 'Los';
child.prototype.getArea = function(){
return this.width * this.height;
}

我们在构建关系的过程中,我们引入了一个uber属性,并令其指向父及对象。

在这里,我们更新了以下内容:

1. 将usber属性设置成指向父对象的引用;

2. 对toString()方法进行了更新;

之前的toString()方法只是简单的返回this.name,现在我们给他添加了额外的任务,就是检查this.constructor.usber属性,如果存在就调用该属性的toString()方法。

由于this.constructor本身是一个函数,而this.constructo.usber是指向当前对象父级原型的引用,所以我们调用child实体的toString()方法时,其原型链上的toString()方法都会被调用。

var my = child(1,2);
my.toString() // Anna, Jock, Los

以上所述是小编给大家介绍的JavaScript中子对象访问父对象的方式详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
encode脚本和normal脚本混用的问题与解决方法
Mar 08 Javascript
js中将具有数字属性名的对象转换为数组
Mar 06 Javascript
Iframe 自动适应页面的高度示例代码
Feb 26 Javascript
45个JavaScript编程注意事项、技巧大全
Feb 11 Javascript
开启BootStrap学习之旅
May 04 Javascript
jQuery 3 中的新增功能汇总介绍
Jun 12 Javascript
vue.js todolist实现代码
Oct 29 Javascript
总结js中的一些兼容性易错的问题
Dec 18 Javascript
JS实现select选中option触发事件操作示例
Jul 13 Javascript
javascript实现页面的实时时钟显示示例
Aug 06 Javascript
vue 扩展现有组件的操作
Aug 14 Javascript
区分vue-router的hash和history模式
Oct 03 Javascript
浅谈JavaScript 数据属性和访问器属性
Sep 01 #Javascript
老生常谈JavaScript 函数表达式
Sep 01 #Javascript
Ubuntu系统下Angularjs开发环境安装
Sep 01 #Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
Sep 01 #Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
Sep 01 #Javascript
深入理解jQuery3.0的domManip函数
Sep 01 #Javascript
总结AngularJS开发者最常犯的十个错误
Aug 31 #Javascript
You might like
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
关于php循环跳出的问题
2013/07/01 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
javascript 表单的友好用户体现
2009/01/07 Javascript
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
2016/07/27 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
Python3实现生成随机密码的方法
2014/08/23 Python
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
python3实现绘制二维点图
2019/12/04 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
python使用numpy中的size()函数实例用法详解
2021/01/29 Python
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
祖国在我心中演讲稿400字
2014/05/04 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python
Django基础CBV装饰器和中间件
2022/03/22 Python