`
dazhilao
  • 浏览: 240991 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JavaScript定义类的两种方式和继承

阅读更多
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript</title>
<script type="text/javascript" src="jquery.min.js"></script>

<!-- JavaScript 本身是一种面向对象的语言,
它所涉及的元素根据其属性的不同都依附于某一个特定的类。
我们所常见的类包括:数据变量(Array)、逻辑变量(Boolean)、
日期变量(Date)、结构变量(Function)、数值变量(Number)、
对象变量(Object)、字符串变量(String)等

1.所有JavaScript内部对象都有只读的prototype属性。
可以向其原型中动态添加功能(属性和方法),
但该对象不能被赋予不同的原型。然而,
用户定义的对象可以被赋予新的原型(继承)。

2.为已有的类型添加方法

3为自己的类创建方法
-->

<script type="text/javascript">

//定义类
function Car(sColor, iDoors, iMpg){
	this.color = sColor;
	this.doors = iDoors;
	this.mpg = iMpg;
	this.drivers = new Array("Mike", "Sue");
}

function Car2(sColor, iDoors,iMpg) {
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = new Array("Mike", "Sue");

if(typeof Car2._initialized == "undefined") {
	Car2.prototype.showColor = function(){
		alert(this.color);
	}
}

}

function btn1_onclick(){
	var oCar1 = new Car("red", 4, 23);
	var oCar2 = new Car("blue", 3, 25);

	oCar1.drivers.push("Matt");

	alert(oCar1.drivers);
	alert(oCar2.drivers);

	oCar1.showColor();
}

function TestObjectA() {
	this.MethodA = function(){
		alert("TestObjectA.MethodA()");
	}

}

function TestObjectB(){
	this.MethodB = function(){
		alert("TestObjectB.MethodB()");
	}
}

//继承
TestObjectB.prototype = new TestObjectA();

function btn3_onclick(){
	var t = new TestObjectB();
	t.MethodA();
	t.MethodB();
}



function btn2_onclick(){
	var oCar1 = new Car2("red", 4, 23);
	var oCar2 = new Car2("blue", 3, 25);

	oCar1.drivers.push("Matt");

	alert(oCar1.drivers);
	alert(oCar2.drivers);

	oCar1.showColor();
}

Car.prototype.showColor = function(){
	alert(this.color);

}
$(function(){
	
});
</script>
</head>

<body>
<button id="btn1" onclick="btn1_onclick()">btn1</button>
<button id="btn2" onclick="btn2_onclick()">btn2</button>
<button id="btn3" onclick="btn3_onclick()">btn3</button>
</body>
</html>

分享到:
评论

相关推荐

    Javascript中类式继承和原型式继承的实现方法和区别之处

    其它的面向对象程序设计语言都是通过关键字来解决继承的问题。但是javascript中并没有定义这种实现的机制。接下来通过本文给大家介绍Javascript中类式继承和原型式继承的实现方法和区别,需要的朋友可以参考下

    javascript面向对象之Javascript 继承

    在JavaScript中实现继承可以有多种方法,下面说两种常见的。 一,call 继承,先看代码: 先定义一个“人”类 代码如下: //人类 Person=function(){ this.name=”草泥马”; this.eat=function(){ alert&#40;“我要...

    基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解

    首先来分析构造函数和原型链两种实现继承方式的缺陷: 构造函数(对象冒充)的主要问题是必须使用构造函数方式,且无法继承通过原型定义的方法,这不是最好的选择。不过如果使用原型链,就无法使用带参数的构造函数...

    JavaScript寄生组合式继承实例详解

    首先,在js中,给对象定义属性有两种方式: //通过执行构造函数设置属性 function A(){ this.a = 1; } //通过原型设置属性 A.prototype.b = 1; 所以: 一个类Sub要继承另一个类Super,需要继承父类的prototype下的...

    javascript学习笔记.docx

    f) 继承:只是在查询一个属性时自动发生,而不会在写属性时发生,就是说单写一个父类的属性时,JavaScript环境会为对象本身创建一个同名的属性,从此该属性就覆盖了父类中的属性。 12) 创建一个数组可用 new Array()...

    JavaScript原型继承和原型链原理详解

    这篇文章主要介绍了JavaScript原型继承和原型链原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在讨论原型继承之前,先回顾一下关于创建自定义类型的...

    angular-inheritance:Angular控制器和服务的(多)继承

    通过在Angular代码中引入继承和类似多继承的过程,它可以利用两个世界的优势。安装要安装Angular继承,您只需要在dist文件夹中获取JS文件即可。 凉亭版本即将推出。 然后,将它们放在您的lib文件夹中并添加您的索引...

    javascript 面向对象编程基础 多态

    其它面向对象语言的多态一般都由方法重载和虚方法来实现多态,Javascript也通过这两种途径来实现! 重载:由于Javascript是弱类型的语言,而且又支持可变参数,当我们定义重载方法的时候,解释器无法通过参数类型和...

    javascript 面向对象全新理练之数据的封装

    它是面向对象程序设计的三要素之首,其它两个是继承和多态,关于它们的内容在后面再讨论。 关于数据封装的实现,在 C++、Java、C# 等语言中是通过 public、private、static 等关键字实现的。在 JavaScript 则采用了...

    深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)

    许多OO语言都支持两种继承方式:接口继承和实现继承。 接口继承只继承方法签名,而实现继承则继承实际的方法。 如其所述,由于函数没有签名,在ECMAScript中无法实现接口继承。 ECMAScript只支持实现继承,而且其...

    千方百计笔试题大全

    237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...

    java面试宝典

    237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...

    Java语言基础下载

    创建线程的两种方式 179 线程的控制 180 实例分析 182 内容总结 189 独立实践 190 第十二章:高级I/O流 192 学习目标 192 I/O基础知识 193 字节流 193 字符流 194 节点流 194 过程流 194 基本字符流类 198 对象串行...

    traits.js:JavaScript 的特征组合库

    Inactive 此存储库不再积极维护。... 简而言之:如果将定义同名方法的两个特征组合在一起,您的程序就会失败。 特征不会自动优先考虑任何一个。兼容性对于 1 对 1 功能和与原始traits.js 的兼容性,包括内置的

    写给大家看的面向对象编程书(第3版).[美]Matt Weisfeld(带详细书签).pdf

    第7章 掌握继承和组合 102 7.1 重用对象 102 7.2 继承 103 7.2.1 一般化和特殊化 105 7.2.2 设计决策 105 7.3 组合 107 7.4 为什么封装在OO中如此重要 109 7.4.1 继承如何削弱封装 109 7.4.2 多态的一个详细...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    3.3 render呈现控件的几种方式 30 3.3.1 使用htmltextwriter类输出 30 3.3.2 直接输出html标签 32 3.3.3 使用服务器控件的rendercontrol方法 33 3.4 addattributestorender方法 34 3.5 createchildcontrols方法...

    【卷一/共两卷】AJAX实战pdf高清版90M

    B.2.2 构造函数、类和原型 B.2.3 扩展内建类 B.2.4 原型的继承 B.2.5 JavaScijpt对象的反射 B.2.6 接口和“鸭子类型” B.3 方法和函数 B.3.1 函数是一等公民 B.3.2 向对象附加函数 B.3.3 从其他对象借用函数 B.3.4 ...

    《javaScrip开发技术大全》源代码

    • sample31.htm 在继承中使用全局变量(一种解决办法) 第9章(\代码\第09章) • sample01.htm 布尔对象与布尔值 • sample02.htm 布尔值隐式转换为布尔对象 • sample03.htm ...

    最新Java面试宝典pdf版

    1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 91 2、列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序 91 3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库...

Global site tag (gtag.js) - Google Analytics