- 浏览: 887301 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
这几天老大天天嚷嚷要重构我们写的javascript,抱怨代码太混乱,可读性差,维护困难,要求javascript也按面对象的模型来重构。
由于组里项目大多的javascript,css等客户端工作是另一同事在负责,该同事又特忙无法重构,老大也就只是提建议并未立即实施重构。但是我前些日子也改过些许客户端的小bug,确实那代码看得让人有些云里雾里,不知身在哪山,轻易不敢动代码,于是就自己动手鼓捣起我曾又爱又恨的javascript来,自己写一个简单的js实现namespace,继承,重载等面向对象的特性.欢迎拍砖灌水
.定义namespace
Namesapce.js
复制代码 代码如下:
Namespace = new Object();
Namespace.register = function(fullname){
try
{
var nsArray = fullname.split(".");
var strNS = "";
var strEval = "";
for(var i=0;i<nsArray.length;i++){
if(strNS.length >0)
strNS += ".";
strNS += nsArray[i];
strEval += " if(typeof("+ strNS +") =='undefined') " + strNS + " = new Object(); ";
}
if(strEval != "") eval(strEval);
}catch(e){alert(e.message);}
}
.Employee.js
Employee.js
复制代码 代码如下:
//注册命名空间
Namespace.register("MyCompany");
//1.类:雇员
MyCompany.Employee = function(empName){
this.Name = empName;
this.Salary = 1000;
this.Position = "cleaner";
}
MyCompany.Employee.prototype.ShowName = function(){
return "I'm "+this.Name+",my salary is $" + this.Salary;
}
MyCompany.Employee.prototype.Work = function(){
return "I'm a "+ this.Position +",I'm cleaning all day!"
}
//2.类:程序员
MyCompany.Developer = function(empName){
//继承父类属性
MyCompany.Employee.call(this,empName);
//覆盖父类属性
this.Position = "developer";
//扩展属性
this.Technology = "C#";
}
//继承父类原型方法
MyCompany.Developer.prototype = new MyCompany.Employee();
//覆盖父类方法
MyCompany.Developer.prototype.Work = function(){
return "I'm a "+ this.Position +",i'm good at "+ this.Technology +",i'm coding all day!"
}
测试代码
复制代码 代码如下:
<html>
<title>javascript 面向对象的实现 namespace,class,继承,重载</title>
<head>
<script language="javascript" src="namespace.js" type="text/javascript"></script>
<script language="javascript" src="employee.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function showEmployee(){
var emp = new MyCompany.Employee("xiaoming");
showInfo(emp);
}
function showDeveloper(){
var emp = new MyCompany.Developer("Gates");
showInfo(emp);
}
function showInfo(emp){
alert(emp.ShowName());
alert(emp.Work());
}
</script>
</head>
<body>
<input type="button" value="show employee info" onclick="showEmployee();"/><br/><br/>
<input type="button" value="show developer info" onclick="showDeveloper();"/>
</body>
</html>
发表评论
文章已被作者锁定,不允许评论。
-
HTML特殊字符显示
2011-08-16 21:45 1007有些字符在HTML里有特别的含义,比如小于号<就表示HT ... -
html标签a的target属性的用法
2011-08-02 00:40 10911:如果使用标签<a>来链接到一个页面的话,tar ... -
JavaScript中的函数:函数的apply、call方法和length属性
2011-06-03 13:39 820转:http://www.smallrain.net/stud ... -
JS arguments 属性
2011-06-03 13:38 902arguments 属性 为当前执行的 function 对象 ... -
JS数组方法汇总
2011-03-31 12:18 1038js数组元素的添加和删除一直比较迷惑,抽个时间总结如下:var ... -
选择,分组和引用
2011-03-17 12:59 821正则表达式的语法还包 ... -
javascript 中定义private 方法
2011-03-15 09:49 956出处:http://aoqi1883.blog.163.com ... -
event.returnValue和return false的区别
2011-03-15 09:48 1236<!DOCTYPE html PUBLIC " ... -
JavaScript--execCommand指令集
2011-03-15 09:23 964<HTML> <HEAD> ... -
个性博客-七款超靓天气预报免费代码
2011-03-15 09:12 1012第一种: <iframe src="http: ... -
js判断对象是否是某一类型
2011-03-15 09:05 946<!DOCTYPE html PUBLIC " ... -
常用的DOCUMENT.EXECCOMMAND
2011-03-15 09:04 1047<input type=button value=剪切 ... -
解决IE6中 Div层挡不住Select组件
2011-03-14 09:39 1098/** * 通过使用Ifram,解 ... -
配置文件(fckconfig.js)中主要配置项目如下
2011-02-18 10:59 891FCKConfig.CustomConfigurationsP ... -
[转]疯狂的跨域技术
2011-01-30 15:36 1075JavaScript是一种在Web开发中经常使用的前端动态脚本 ... -
JAVASCRIPT中RegExp.$1是什么意思
2011-01-28 15:02 2195RegExp 是javascript中的一个内置对象。为正则表 ... -
js监听WEB页面关闭事件
2010-12-31 10:54 6396javascript捕获窗口关闭事件有两种方法 onbefor ... -
天气数据调用代码,总结了一下收藏
2010-12-14 12:41 1100转载于:http://blog.csdn.net/ ... -
自动跳转
2010-12-13 15:43 931<meta http-equiv="refre ... -
JavaScript面向对象编程
2010-12-07 23:27 893创建自己的对象 要创 ...
相关推荐
在 C# 中,我们使用 `namespace` 来组织代码,而在 TypeScript 中,虽然没有直接对应的 `namespace` 关键字,但可以通过 `module` 来实现类似的功能。不过,TypeScript 更倾向于使用模块系统,如 ES6 的 `import` 和...
- **类与对象**:JScript.NET支持类的定义,可以通过`class`关键字创建类,并通过`new`操作符实例化对象。 - **继承**:类可以继承其他类,使用`extends`关键字实现单继承。 - **接口**:接口定义了一组方法签名,类...
在本文中,我们将探讨如何在几种常见的Web服务技术中实现功能重载,包括ASP.NET、C#和JavaScript。 首先,让我们关注ASP.NET Web服务(ASMX)。在ASP.NET中,创建一个Web服务通常涉及定义一个继承自System.Web....
1. **面向对象思想**:包括继承、多态和封装。继承是类之间的层次关系,允许子类继承父类的属性和方法;多态是指同一接口可以有不同的行为;封装则是隐藏对象的属性和实现细节,仅对外提供公共访问方式。 2. **ASP...
面向对象编程的主要优点包括封装、继承和多态性,这些特性有助于提高代码的可重用性和可维护性。 #### 9. 如何使用C++的头文件? 在C++中,头文件通常用于声明类、函数和其他类型的接口。这些文件通常以`.h`或者`....
类(Class)则提供了面向对象编程的能力,允许定义属性和方法,以及继承和多态。TypeScript 的类支持构造函数、访问修饰符(public、private、protected)和抽象方法。 **五、枚举和泛型** 枚举(Enum)是用于创建...
TypeScript的主要特性包括类型注解、模块、类等面向对象编程的特性。它的设计目标是让开发大型应用更加容易和方便。TypeScript最终会被编译成普通的JavaScript代码,因此它可以运行在任何支持JavaScript的平台上,...
ExtJS与Struts2的集成主要通过AJAX技术实现数据的异步传输,从而避免页面的完全重载,提升用户体验。在Struts2配置文件(struts.xml)中定义了`Login`动作,该动作继承自`ActionSupport`类,并覆盖了`execute()`方法...
**3.2 面向对象的C#实现** - **定义**:类是对象的模板。 - **创建一个类和其方法**:类包含属性和方法。 - **类成员**:包括字段、属性、方法等。 - **构造函数和析构函数**:用于初始化和清理对象资源。 **3.3 ...
这一特性尤其在处理现有的JavaScript库和模块时显得尤为重要,因为它能帮助编译器理解那些通过不同方式定义的对象结构。 声明合并可以应用于三种主要的实体:命名空间、类型和值。命名空间是通过`.`符号访问的命名...
C#不支持传统的多重继承,但是通过接口可以实现类似的效果。例如,一个类可以同时实现多个接口。 ### 10. 计算1-2+3-4+...+n的和 ```csharp int tNum = Convert.ToInt32(this.TextBox1.Text); int sum = 0; for ...
类用于创建对象,它们支持面向对象编程的特性,如继承、封装和多态。接口则定义了对象的结构,可以用来确保其他对象或者类遵循特定的规范。例如,项目可能有一个 `Transaction` 接口,定义了交易对象应包含的属性和...
而Uploadify是一款JavaScript插件,它使用Flash技术实现异步文件上传,可以处理多文件同时上传,提供良好的用户体验。 在Struts2中集成Uploadify,主要是为了解决传统HTML表单提交时可能导致页面刷新的问题,以及...
public static class NumberBoxExtensions { // ... public static MvcHtmlString NumberTextBox(this BootstrapHelper html, string id) { return NumberTextBox(html, id, null, null, null, null, null);...
/// 从系统异常类ApplicationException继承的应用程序异常处理类。 /// 自动将异常内容记录到Windows NT/2000的应用程序日志 /// public class AppException:System.ApplicationException { public AppException() ...