`
anlaneg
  • 浏览: 881 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

javascript 继承实现的一种方式(欢迎讨论,以便改进.优化)

阅读更多
以下,演示了一个js的继承实现,但比竟个人力量有限,请大家共同讨论,是否还有更好的方式来实现.
或者测试是否在其它浏览器存在问题!

<html>
<head><script>
/**
 * 此js文件用于书写继承
 * ---
 * 类:shape
 * 类:Rectangle
 * ---
**/
function Shape()
{	
	if(typeof Shape._init =='undefined')
	{
		//成员函数
		
		Shape.prototype.Draw = function()
		{
			return "draw a shape";
		}
		//
		//  		
		Shape.prototype.ToString = function()
		{
			return "this is a shape";
		}
		
		Shape.prototype.Alert = function()
		{
			alert(this.Draw() + " and " + this.ToString());
		}
		
		//初始化
		Shape._init = true;
	}
}

/**
 * 矩形类
 */

//采用原型的继承必须将此句放在最前面(外面),但这样使的类封装使效.
//下面语句Rectangle.prototype = new Shape()最好放在function Rectangle定义之后,
//个人认为放在此前更易于理解,可理解为申明Rectangle的原型来自于Shape,但部分浏览器可能不能执行此
//代码,目前在IE7,Opera 10.10,Safari 4.0.4 上测试通过,如果您有兴趣,不妨也在此外的浏览器上测试一下,
//如果可以也不妨在文章下说说测试境!

//注意,如果采用Rectangle.prototype = Shape.prototype则两者为同一原型,对其的更改,将直接影响父类.

//网上介绍的call,apply等方法也能实现继承吗?我测试过,但没成功,原因可能是我的写法,我总是习惯将一个js
//类的所有方法体及参数写在一起.

//当然这次也有例外,同样是因为下面这一句,如果您恰有方法来解决这件事,也不妨写了说说!
Rectangle.prototype = new Shape();
function Rectangle()
{
	if(typeof Rectangle._init == 'undefined')
	{		
		Rectangle.prototype.Draw = function()
		{
			return "draw a rectangle";
		}
		//初始化完成
		Rectangle._init = true;
	}
}

/**
 * Main类
*/
function Main()
{
	Main.prototype.main = function()
	{
		var shape = new Shape();
		shape.Alert();
		
		
		var rectangle = new Rectangle();
		alert(rectangle.ToString());//对继承的方法的检查
		alert(rectangle.Draw());//对覆盖的方法的检查
		rectangle.Alert();//对回调方法的检查(测试).		
	}
}
var javascriptMain = new Main();
javascriptMain.main();
</SCRIPT></head>
<body>onload</body>
</html>
分享到:
评论
1 楼 anlaneg 2009-12-25  
这么久也没人来讨论,自已顶下吧!

相关推荐

    [JavaScript权威指南(第6版)].(美)David.Flanagan.中文扫描版.pdf

    2. 对象与原型:JavaScript是一种基于对象的语言,书中会深入探讨对象的概念,包括对象创建(字面量、构造函数、工厂函数)、属性和方法、原型链、继承机制等。 3. 函数与闭包:深入讲解函数的使用,如函数表达式、...

    javascriptjiaocheng.rar_javascript

    JavaScript是一种广泛应用于网页和网络应用的编程语言,尤其在客户端的动态交互方面有着不可或缺的地位。本教程"javascriptjiaocheng.rar"旨在帮助学习者深入理解并熟练掌握JavaScript的核心概念和实际应用。 教程...

    javascript study

    在JavaScript中,EventEmitter或事件监听器是常见的实现方式。 11. **命令模式**:将请求封装为一个对象,以便使用不同的请求、队列请求或支持可撤销的操作。 12. **职责链模式**:让多个对象都有机会处理请求,...

    [JavaScript权威指南_第6版].pdf

    首先,我们要了解JavaScript是一种解释型的、弱类型的、基于原型的、动态类型的脚本语言,广泛应用于网页和网络应用开发。在第六版中,作者更新了大量的内容,以反映自第五版以来JavaScript语言的重大变化和发展,...

    Learning JavaScript Design Patterns

    因为它们允许开发者站在众多先行者的肩膀上,吸取他们宝贵的经验,从而以一种优化的方式构建代码。此外,设计模式还为我们提供了一种共通的词汇来描述解决方案,这在我们试图向他人传达如何在代码中构建解决方案时,...

    JavaScript语言精粹 (英文版)

    《JavaScript语言精粹》不仅是一本技术书籍,更是一种思维方式的传递。通过学习本书,开发者不仅能掌握JavaScript的核心知识,还能学会如何用批判的眼光审视这门语言,从而更好地利用其优势,避免不足之处。对于希望...

    javascript 面向对象继承

    在JavaScript中实现继承的一种常见方式是通过原型链。具体步骤如下: 1. **定义父类**:首先定义一个父类,包含了一些共享的方法或属性。 ```javascript function Parent() { // 构造函数 } Parent.prototype ...

    JavaScript_1x线是冻结的功能和错误修复现在发生.zip

    Yarn是Facebook、Google、Expo和Tilde等公司共同开发的JavaScript包管理器,它为开发者提供了一种快速、可靠且安全的方式来管理和安装项目依赖。Yarn通过使用锁定文件(如yarn.lock)来确保每次安装的依赖包版本一致...

    JAVAscript高级教程_程序设计

    JavaScript是一种动态类型的弱类型语言,这意味着变量可以随时改变其数据类型。它支持基本类型(如字符串、数字和布尔值)以及复杂类型(如对象和数组)。理解这些类型对于编写高效代码至关重要。 接着,我们将讨论...

    JavaScript王者归来(目录)

    的另一种JavaScript实现** - 提供了一种新颖的方式来展示Hello World程序。 - **1.4.3 数据交互--JavaScript的一项强大功能** - 解释了JavaScript如何通过Ajax等技术进行前后端通信。 - **1.4.4 JavaScript表面...

    javascript宝典

    综上所述,JavaScript宝典第四版会涵盖以上所有知识点,并可能更深入地讨论每个主题,包括最佳实践、常见陷阱以及性能优化策略。无论你是Web开发新手还是有经验的开发者,这本书都能为你提供宝贵的资源和指导。通过...

    Javascript 完全手册(PDF)

    JavaScript是一种解释型的、弱类型的、基于原型的语言,它主要用于为网页添加交互性。通过学习JavaScript,开发者可以创建动态网页,实现用户输入验证、页面元素操作、异步通信(AJAX)以及复杂的前端应用。 手册...

    深入理解JavaScript特性1

    1. **箭头函数**:箭头函数是ES6引入的一种简洁的函数定义方式,它改变了传统的function关键字定义函数的方式,使得代码更加紧凑。箭头函数的关键特点包括没有自己的this值,而是继承自上下文,这解决了回调函数中...

    ios-Json 转 模型一行代码 (优化了上一个版本).zip

    本资源"ios-Json 转 模型一行代码 (优化了上一个版本).zip"提供了一种简洁的方法来实现JSON数据到模型对象的转换,特别是对于继承自NSObject的模型类,可以一键式解决解析问题。这个优化过的版本很可能改进了性能...

    JavaScript权威指南_第6版 中文版(附英文版)

    1. **箭头函数**:箭头函数是ES6中的一种新的函数定义方式,它拥有更简洁的语法,并且改变了`this`的指向,使得在处理回调函数时避免了`this`的混淆问题。 2. **模板字符串**:模板字符串用反引号(`)包裹,可以方便...

    JavaScript内核高级教程

    - **概念介绍**:解释了JavaScript作为一种多范式语言,支持函数式编程的特点,包括高阶函数、闭包等。 - **实践技巧**:演示了如何利用这些特性编写简洁高效的代码。 - **闭包**: - **定义与作用**:深入探讨...

    Apress Pro JavaScript Design Patterns Ebook With Source Code

    6. **JavaScript特性的应用**:讨论JavaScript的动态性、原型继承和闭包等特性如何与设计模式相结合,以及如何利用这些特性来优化和改进设计模式的实现。 7. **实战场景**:书中可能会包含实际项目中的应用场景,...

Global site tag (gtag.js) - Google Analytics