JavaScript 超类与子类 继承
//超类和子类 继承的实现
function R(w, h) {
var date = new Date();
this.width = w;
this.height = h;
this.createtime = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDay() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
R.count++;
}
R.prototype.area = function () {
return this.width * this.height;
}
function P(x, y, w, h) {
R.call(this, w, h);//调用基类的构造函数,指定调用对象(如果不指定,它的调用对象,是它的定义域的相关作用域中的对象),用来初始化对象为其添加一些R初始化定义的属性,可尝试直接调用
//另外一种替代方法,使用P.prototype.superclass=R; 然后调用时 this.superclass(w,h) 也可以指定它的调用对象,因为superclass的定义时的作用域就是实例对象
this.x = x;
this.y = y;
}
P.prototype = new R();//设置原型对象为超类的一个实例对象,以后所有的P实例化对象,都会继承一个R实例对象的所有属性。
delete P.prototype.width;
delete P.prototype.height;
delete P.prototype.createtime;
//删除一些P实例化对象时,不需要继承的属性(一般),因为都已经在基类的构造函数定义了这些属性,成为了常规属性
P.prototype.constructor = P;//修改构造函数名
P.prototype.parea = function () {
return R.prototype.area.call(this);//调用被覆盖的基类函数
}
P.prototype.area = function () {
return "nothing";
}
//添加新属性
P.prototype.contains = function (x, y) {
return (x > this.x && x < this.x + this.width && y > this.y && y < this.y + this.height);
}
var obj = new P(10, 20, 10, 10);
console.log(obj.contains(5, 5) + "\narea:" + obj.area() + "\nparea:" + obj.parea());
输出:
"false
area:nothing
parea:100"
//非继承的扩展
//从一个类的prototype得到到另外一个类的prototype
JavaScript 超类与子类 继承的更多相关文章
- Core Java (十一) Java 继承,类,超类和子类
Core Java (十一) Java 继承,类,超类和子类 标签: javaJavaJAVA 2013-01-22 17:08 1274人阅读 评论(0) 收藏 举报 分类: java(58) 读 ...
- JS 超类和子类
此篇由别的大神的博客与<javascript高级程序设计>一书整理而来 原博客地址:https://hyj1254.iteye.com/blog/628555 看到javascript高级 ...
- 老生常谈javascript的5中继承
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- JavaScript对寄生组合式继承的理解
有关JavaScript的几种继承方式请移步JavaScript的几种继承方式 原型链的缺陷 SubType.prototype = new SuperType(); 这样做的话,SuperType构 ...
- 【面试必备】javascript的原型和继承
原型.闭包.作用域等知识可以说是js中面试必考的东西,通过你理解的深度也就能衡量出你基本功是否扎实.今天来复习一下javascript的原型和继承,虽说是老生常谈的话题,但对于这些知识,自己亲手写一遍 ...
- Javascript的实例化与继承:请停止使用new关键字
本文同时也发表在我另一篇独立博客 <Javascript的实例化与继承:请停止使用new关键字>(管理员请注意!这两个都是我自己的原创博客!不要踢出首页!不是转载!已经误会三次了!) 标题 ...
- JavaScript面向对象中的继承
1.1继承的基本概念 使用一个子类,继承另一个父类,那么子类可以自动拥有父类中的所有属性和方法,这个过程叫做继承. >>>继承的两方,发生在两个类之间. 实现继承的三种方式: 扩展O ...
- Javascript 进阶 面向对象编程 继承的一个样例
Javascript的难点就是面向对象编程,上一篇介绍了Javascript的两种继承方式:Javascript 进阶 继承.这篇使用一个样例来展示js怎样面向对象编程.以及怎样基于类实现继承. 1. ...
- Javascript 进阶 面向对象编程 继承的一个例子
Javascript的难点就是面向对象编程,上一篇介绍了Javascript的两种继承方式:Javascript 进阶 继承,这篇使用一个例子来展示js如何面向对象编程,以及如何基于类实现继承. 1. ...
随机推荐
- Scut:缓存管理
Scut 的缓存管理看起来还是蛮复杂的. redis 本身就有内存缓存+持久化的作用,Scut还是自己封装了一层内存缓存+Redis缓存+持久化. . 这是一个缩略版本的结构图. 1. 上半部分是 ...
- KEIL C51中的_at_关键字
绝对位置变量 变量可以在你的C程序中的绝对内存地址位于源模块使用_at_关键字.此功能的用法是: 类型 _ memory_space _ 变量名 _at _ 常数 ; 其中:memory_space ...
- 324篇CSS应用效果集合(梦想天空,可同时应用于Web开发与Qt界面开发)
http://www.cnblogs.com/lhb25/category/146075.html http://www.yyyweb.com/
- 第23章 COM和ActiveX(COM可以实现跨进程跨机器的函数调用)
控件对象既可在EXE中实现,也可在DLL中实现.这种实现对于COM对象的用户来说是透明的.因为COM提供了调度服务(marshaling).COM调度机制能够化进程甚至跨机器的函数调用,这使得16位程 ...
- Chrome不支持NPAPI的信息与替代方案
昨天Chrome稳定版更新到了42版,发现百度云.支付宝.网银等等的插件都失效了,打开 chrome://plugins/ 一看,NPAPI都消失了,只有flash的插件还在.解决办法是到 chrom ...
- 完美解决VMware Workstation : Could not open /dev/vmmon: No such file or directory
root@tiger:/usr/bin# cd /etc/init.d root@tiger:/usr/bin# sudo mv /usr/lib/vmware/modules/binary /usr ...
- COJ 0985 WZJ的数据结构(负十五)(限定区域不同数)
传送门:http://oj.cnuschool.org.cn/oj/home/addSolution.htm?problemID=955 试题描述: CHX有一个问题想问问大家.给你一个长度为N的数列 ...
- white-space norma nowrap强制同一行内显示所有文本文字,让所有文字内容中一排显示不换行
日常我们为了让文字内容在一行内显示完,哪怕宽度不够也不能换行,我们可以使用white-space样式,但如果遇到了html br强制换行标签,无论是设置white-space与否都会被<br&g ...
- tinyxml开源库的基本用法
最近项目中的某个功能需要写xml,由于项目中已经引入了tinyxml,所以不再寻找其他开源库. 前提:你得有个xml对象,声明tinyxml的对象:基于tinyxml的内存管理,TiXmlDocume ...
- jquery 异步请求Demo【转载】
$(document).ready(function() { $.ajax({ url : "/AjaxAction/LoginArea.ashx", data : {userna ...