- 浏览: 697047 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (272)
- Struts1.x (7)
- 事务 (2)
- Hibernate (11)
- 数据库 (14)
- JavaScript&Ajax (43)
- JSP&Servlet (2)
- Flex (1)
- 其它 (9)
- Java (22)
- 框架集成 (1)
- WebService (3)
- Tomcat (3)
- 加密和安全登录 (13)
- 基于原型的JavaScript (0)
- JavaDoc和Java编码规范 (3)
- CAS (1)
- 加密 (1)
- Axis2 (10)
- Ext2.x (3)
- SSH整合 (2)
- Ext (0)
- 正则表达式 (1)
- 设计模式 (4)
- 对象序列化技术 (3)
- CVS (2)
- Struts2 (6)
- Spring 2.x (7)
- Spring Security (2)
- Java 课程 (20)
- 程序员之死 (1)
- 软件测试 (6)
- UML (5)
- NetBeans (1)
- cxf (1)
- JMS (13)
- 设计 (5)
- ibatis2.x (3)
- Oracle (1)
- WebSphere (7)
- 概要设计 (1)
- DB2 (10)
- PowerDesigner (0)
- 软件工程 (5)
- rose (1)
- EA (1)
- LDAP (7)
- Portal&Portlet (3)
- MQ (10)
- ESB (4)
- EJB (2)
- JBoss (2)
最新评论
-
typeRos:
只有配置文件,没有代码么大神
Spring实现IBMMQ的JMS消息发布/订阅模式 -
panamera:
如果ActiveMQ服务器没有启动,这个时候消息生产者使用Jm ...
Spring JMSTemplate 与 JMS 原生API比较 -
lian819:
顶1楼, 引用文件, 配置属性, 太方便了
EXTJS 同步和异步请求 -
wilhard:
说得清楚明白
<%@ include file=""%>与<jsp:include page=""/>区别 -
刘琛颖:
总结的很好。受益了
javascript 父窗口(父页面)— 子窗口 (子页面)互相调用的方法
从类继承
到这里,我们已经了解了构造函数和原型对象如何使您在JavaScript中模拟类。您可以看到,原型链可以确保所有对象都有Object.prototype的公用方法,以及如何使用闭包来模拟类的私有成员。但这里还缺少点什么。您尚未看到如何从类派生,这在C#中是每天必做的工作。遗憾的是,在JavaScript中从类继承并非像在C#中键入冒号即可继承那样简单,它需要进行更多操作。另一方面,JavaScript非常灵活,可以有很多从类继承的方式。
例如,有一个积累Pet,它有一个派生类Dog,如图9所示。这个在JavaScript中如何实现呢?Pet类很容易。您已经看见如何实现它了:
// class Pet function Pet(name) { this.getName = function() { return name; } this.setName = function(newName) { name = newName; } } Pet.prototype.toString = function() { return "This pet's name is: " + this.getName(); } // end of class Pet var parrotty = new Pet("Parrotty the Parrot"); alert(parrotty);
现在,如何创建从Pet派生的类Dog呢?在图9种可以看到,Dog有另一个属性breed,它改写了Pet的toString方法(注意,JavaScript的约定是方法和属性的名称使用camel大小写,而不是在C#中建议的Pascal大小写)。图10显示如何这样做。
Figure 10 从 Pet 类派生
// class Dog : Pet // public Dog(String name, String breed) function Dog(name, breed) { // think Dog: base(name) Pet.call(this, name); this.getBreed = function() { return breed; } // Breed doesn't change, obviously! It's read only. // this.setBreed = function(newBreed){breed = newBreed;} } // this makes Dog.prototype inherits from Pet.prototype Dog.prototype = new Pet(); // remember that Pet.prototype.constructor // point to Pet. We want out Dog instances' constructor // to point to Dog. Dog.prototype.constructor = Dog; // Now we override Pet.prototype.toString Dog.prototype.toString = function() { return "This dog's name is: " + this.getName() + " , and its breed " + "is: " + this.getBreed(); }; //end of class Dog var dog = new Dog("Buddy", "Greed Dane"); // test the new toStirng() alert(dog); // Testing instanceof (similar to the is operator) // (dog is Dog)? yes alert(dog instanceof Dog); // (dog is Pet)? yes alert(dog instanceof Pet); // (dog is Object)? yes alert(dog instanceof Object);
所使用的原型 — 替换技巧正确设置了原型链,因此假如使用C#,测试的实例将按预期运行。而且特权方法仍然会按预期运行。
下一节:模拟命名空间
发表评论
-
JavaScript 代码压缩工具
2011-02-16 15:15 901见附件,免费工具。 -
在服务器端判断request来自Ajax请求(异步)还是传统请求(同步)
2009-11-26 13:38 10672在服务器端判断request来自Ajax请求(异步)还是传 ... -
转:用Javascript来关闭IE浏览器和FireFox浏览器
2009-06-03 11:08 2137原文地址:http://hi.baidu.com/suen ... -
JavaScript 解析 JSON
2009-02-25 20:36 0JSON (JavaScript Object Not ... -
JavaScript的四舍五入运算
2009-02-02 13:49 1742function ForDight(Dight,How) { ... -
JavaScript 使用面向对象的技术创建高级 Web 应用程序
2009-01-19 21:44 1484转载: JavaScript 使用面 ... -
在JavaScript中使用面向对象
2009-01-18 17:05 1099原文地址:http://www.cnblo ... -
应当这样编写 JavaScript 代码吗?
2009-01-17 23:09 1091应当这样编写 JavaScript 代码吗? 您已经看到Ja ... -
JavaScript模拟命名空间
2009-01-17 17:35 1304JavaScript模拟命名空间 在C++和C#中,命名 ... -
模拟私有属性
2009-01-07 15:46 1104模拟私有属性 现在介绍闭包如何帮助模拟私有成员。正常情况 ... -
闭 包
2009-01-07 15:10 1215闭包 我没有自觉地学习过JavaScript。我必须快点了解 ... -
静态属性和方法
2009-01-05 18:15 1289静态属性和方法 有时,您需要绑定到类而不是实例的属性或方法, ... -
原 型
2009-01-05 17:58 1031原型 在使用JavaScript的面向对象编程中,原型对象 ... -
构造函数而不是类
2009-01-04 23:15 1360构造函数而不是类 前面提到过,有关JavaScript ... -
JavaScript 函数是最棒的
2009-01-04 19:25 1440JavaScript 函数是最棒的 在很多编程语言中,函数和 ... -
insertAdjacentElement方法
2008-12-29 18:08 2444语法: oElement = object . inse ... -
javascript 中定义private 方法
2008-12-26 12:40 2253出处:http://aoqi1883.blog.163.co ... -
event.returnValue和return false的区别
2008-12-25 19:52 26563<!DOCTYPE html PUBLIC " ... -
按“回车”键提交表单
2008-12-25 19:17 2525<!DOCTYPE html PUBLIC " ... -
DWR 同步机制
2008-12-25 19:03 1446被一个小问题所困扰,一直到昨天,我最后 ...
相关推荐
JavaScript一种没有类的,面向对象的语言,它使用原型继承来代替类继承。这个可能对受过传统的面向对象语言(如C++和Java)训练的程序员来说有点迷惑。JavaScript的原型继承比类继承有更强大的表现力,现在就让我们...
我们还知道,面向对象编程有三个重要的概念 - 封装、继承和多态。 但是在JavaScript的世界中,所有的这一切特性似乎都不存在。 因为JavaScript本身不是面向对象的语言,而是基于对象的语言。
在JavaScript中继承是一个非常复杂的话题,比其他任何面向对象的语言中的继承都复杂得多。在大多数其他面向对象语言中,继承一个类只需使用一个关键字即可。与它们不同,在JavaScript中要想达到传承公用成员的目的,...
笔者历经多年javascript的开发,痛彻体会javascript面向对象编程的不便性,精心制作了一个类的定义与继承功能的js,实现了在javascript中对类的定义、继承、封装机制,主要功能特征包括: 一、 统一了类定义的语法...
JavaScript中的继承之类继承_.docx
javascript 五种继承简介。
浅析Javascript原型继承,浅析Javascript原型继承
javascript控件开发之继承关系的源码
继承是面向对象开发的又一个重要概念,它可以将现实生活的概念对应到程序逻辑中。...在JavaScript中没有专门的机制来实现类的继承,但可以通过拷贝一个类的prototype到另外一个类来实现继承等扥,看资料
javascript的prototype继承
js javascript zInherit 对象 继承
理解Javascript原型继承原理
JavaScript面向对象继承详解,js进阶高手必读,内含六部分
javascript 继承派生等问题的资料,都是网上收集的,学会apply call 就懂js面向对象的原理了。
javascript原型继承,prototype的使用,可以像java一样继承
Javascript继承机制原理 可以参考下
Javascript原型继承Javascript原型继承Javascript原型继承
浅析javascript原型继承机制,浅析javascript原型继承机制
NULL 博文链接:https://yueyemaitian.iteye.com/blog/785325