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 相关文章推荐
Javascript中的数学函数集合
May 08 Javascript
jQuery Jcrop插件实现图片选取功能
Nov 23 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
Mar 08 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
Jul 27 Javascript
jQuery计算文本框字数及限制文本框字数的方法
Mar 01 Javascript
使用ajaxfileupload.js实现上传文件功能
Aug 13 Javascript
AngularJS入门教程之模块化操作用法示例
Nov 02 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
Jan 18 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
Sep 01 Javascript
vue实现一个炫酷的日历组件
Oct 08 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
May 21 Javascript
解决vue项目axios每次请求session不一致的问题
Oct 24 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
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
php 静态属性和静态方法区别详解
2017/04/09 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
ECMAScript 基础知识
2007/06/29 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
HTML5实现留言和回复页面样式
2015/07/22 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
angular4中关于表单的校验示例
2017/10/16 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
Python 数据结构之队列的实现
2017/01/22 Python
Python入门_浅谈for循环、while循环
2017/05/16 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
使用Python实现画一个中国地图
2019/11/23 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
Python异常处理机制结构实例解析
2020/07/23 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
解除聘用合同证明书范本
2014/09/11 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
送给小学生的暑假礼物!小学生必背99首古诗
2019/07/02 职场文书
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js