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 相关文章推荐
日期处理的js库(迷你版)--自建js库总结
Nov 21 Javascript
jQuery插件boxScroll实现图片轮播特效
Jul 14 Javascript
Angular的模块化(代码分享)
Dec 26 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
Jan 05 Javascript
TypeScript入门-基本数据类型
Mar 28 Javascript
解决Extjs下拉框不显示的问题
Jun 21 Javascript
JavaScript实现区块链
Mar 14 Javascript
详解如何使用webpack打包多页jquery项目
Feb 01 jQuery
vue router 组件的高级应用实例代码
Apr 08 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
Jun 18 Javascript
js轮播图之旋转木马效果
Oct 13 Javascript
如何使JavaScript休眠或等待
Apr 27 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
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
设定php简写功能的方法
2019/11/28 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
jquery插件之easing使用
2010/08/19 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
[00:35]可解锁地面特效
2018/12/20 DOTA
Python编程之event对象的用法实例分析
2017/03/23 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
python内存动态分配过程详解
2019/07/15 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
python中几种自动微分库解析
2019/08/29 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
英国乡村时尚和宠物用品专家:Pet & Country
2018/07/02 全球购物
大学新生军训感言
2014/02/25 职场文书
对标管理实施方案
2014/03/12 职场文书
Python3中最常用的5种线程锁实例总结
2021/07/07 Python