`
sxpyrgz
  • 浏览: 72465 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVASCIRPT继承与命名空间

 
阅读更多
<script type="text/javascript" src="jquery-1.11.1.min.js"></script>
<body>
	<div id="contain1">
		<input type = "button" name="test1"  option="{required:true}">
	</div>
    <div id="contain2">
		<input type = "button" name="test2"  option="{required:true,type:'number'}">
	</div>
</body>
<script type="text/javascript">
<!--
//声明一个对象$.problemWo,添加一个b的静态属性和myclick的静态方法。
(function ($) {
    	 // 命名空间的绑定在$上  
    $.namespace = function() {  
		var a=arguments, o=null, i, j, d;    
		for (i=0; i<a.length; i=i+1) {        
			d=a[i].split(".");  
			if(!$.com){
				o=$.com = function(){};  
			} else {
				o = $.com;
			} 
			for (j=(d[0] == "com") ? 1 : 0; j<d.length; j=j+1) {            
				o[d[j]]=o[d[j]] || {};            
				o=o[d[j]];        
				}    
			}    
			return o;
	};
	//注册命名空间
	$.namespace("com.frame");
	//为类增加静态方法
	$.com.frame.extendStatic = function (obj,obj1){
		if(obj && obj1){
			$.extend(obj,obj1);
		}
	}
	$.com.frame.extend= function (classObj,obj1){
		var tempObj = function(){};
		if(classObj && obj1){
			if(typeof(classObj) == "function" && typeof(obj1) == "object"){
				$.extend(classObj.prototype,obj1);
				tempObj.prototype = new classObj();
			}else{
				console.log("请检查参数!");
			} 
		}else if(classObj){
			if(typeof(classObj) == "function"){
				tempObj.prototype = new classObj();
			}
		}else{
			console.log("请检查参数!");
		} 
		return tempObj;
	}
    $.com.frame.Base = function () {
		this.x = "123";
        this.init();
    };
	$.com.frame.Base.prototype =  {
		 init:function(){
			 console.log("init");
		 },
		 bindEvent:function(){
		 },
		 validate:function(){
		 }
    };
})(jQuery);
    
 $.namespace("com.frame.test");
 $.com.frame.test.ProblemWo =  $.com.frame.extend($.com.frame.Base );
 
 $.com.frame.test.ProblemWo1 =  $.com.frame.extend($.com.frame.Base, {
	temp:"2222",
	init:function(){
		this.c = "2222222";
		this.x = "b2bb";
		console.log(this.temp);
		this.temp = "12211";
		console.log(this.c);
		console.log(this.b);
	}
});

//声明一个对象$.problemWo,添加一个b的静态属性和myclick的静态方法。
(function ($) {
	$.com.frame.extendStatic($.com.frame.test.ProblemWo,
	 { staticT: 5 ,staticTest: function () {   } }
	);
})(jQuery);
 var problemWo = new  $.com.frame.test.ProblemWo();
 
  var problemWo1 = new  $.com.frame.test.ProblemWo1();
 alert(problemWo1.x);
 alert(problemWo.x);
 
$("#contain1 input[option]").each(function(){
	alert(this.name);
	var optionObj = this.getAttribute("option");
})

 </script>

 

分享到:
评论

相关推荐

    WebApi返回xml格式时去除命名空间

    然而,在某些场景下,例如与JavaScript或简单的数据解析应用集成时,我们可能希望去掉这些命名空间以简化处理。 要实现这个目标,我们可以自定义一个XML序列化器,继承自`System.Xml.Serialization.XmlSerializer`...

    JavaScript 命名空间 使用介绍

    然而,JavaScript不同于其他编程语言,如Java或C#,它没有内置的命名空间概念,这使得在处理大型项目时可能会遇到命名冲突的问题。在Java或C#中,命名空间用于将代码组织到逻辑分组中,允许相同的名称在不同的命名...

    Javascript 类、命名空间、代码组织代码

    1. **模块化与命名空间** 内容中首先定义了一个名为`pageJs`的对象,它包含`urls`数组和`run`函数。这实际上是一种模块化实践,因为`pageJs`可以看作是一个模块,它封装了相关的功能代码。通过模块化的组织方式,...

    EXT dojochinaExt命名空间.rar

    EXT dojochinaExt命名空间是EXT框架的一个特定扩展,主要针对中国开发者设计,它提供了丰富的组件和功能,便于在JavaScript应用中构建复杂的用户界面。EXT是一个强大的前端开发框架,尤其在创建数据驱动的Web应用...

    JavaScript模式中文[pdf] 百度云

     命名空间模式  声明依赖关系  私有属性和方法  模块模式  沙箱模式  静态成员  对象常量  链模式  method()方法  小结  第6章 代码复用模式  传统与现代继承模式的比较  使用类式继承时的预期结果  ...

    javascript面向对象之Javascript 继承

    上几节讲了 JavaScript 面向对象之命名空间 、 javascript 面向对象的JavaScript类 、 JavaScript 面向对象的之私有成员和公开成员 与 Javascript 面向对象之重载,大家可以先看上面的再继续往下看。在JavaScript...

    JavaScript 面向对象编程详细讲解文档

    上述代码展示了如何通过简单的JavaScript代码来模拟命名空间。 在JavaScript中实现继承,通常是通过原型链和构造函数来完成的。可以使用`Object.create()`方法来创建一个新对象,使新对象的`__proto__`指向另一个...

    Effective JavaScript 编写高质量JavaScript代码的68个有效方法1

    第四章主要讨论原型和对象,这是理解JavaScript继承机制的关键。通过解释原型链和构造函数,作者展示了如何利用这些特性来实现面向对象编程。他还提到了一些最佳实践,如使用Object.create()来创建新对象,以及避免...

    Object-oriented-javascript

    5. **模块化和命名空间**:讲解如何组织和管理代码,通过模块化和命名空间来避免变量冲突和提高代码的可维护性。 6. **JavaScript的面向对象特性发展**:可能涵盖了从早期JavaScript版本到ES6中类语法的引入等语言...

    JavaScript03 面向对象编程.pdf_前端学习资料

    总的来说,JavaScript的面向对象编程涉及了类与原型的比较、继承机制、封装、多态、命名空间等核心概念。理解并熟练运用这些概念是成为专业前端开发者的关键步骤。通过学习和实践,开发者可以创建出高效、易于维护的...

    《高性能JavaScript编程》.Nicholas.C.Zakas著.英文版

    5. **代码组织与模块化**:书中介绍了如何通过模块化来提高代码可维护性和复用性,包括立即执行函数表达式(IIFE)、命名空间和AMD/CMD模块加载器。 6. **JavaScript性能分析**:Zakas教授了如何使用开发者工具进行...

    Class:轻量级和优化的类定义在Javascript中变得简单。 仅5kb即可支持命名空间,类,继承和模块mixins

    Class.js是一种轻量级且经过优化的库,用于使用简洁的语法在Javascript中定义名称空间,类和继承。 定义一个命名空间 namespace("ui.controls.Box"); ui.controls.Box = function(){} 在命名空间中定义一个空的...

    编写javascript插件,来扩展已有的JavaScript功能.zip

    5. **命名空间**:为了避免与其他代码冲突,使用命名空间或立即执行函数表达式(IIFE)封装插件。 通过以上分析,我们可以看到编写JavaScript插件是一个涉及JavaScript基础、面向对象编程、原型链、性能优化等多个...

    Object_Oriented_Javascript

    - **自执行匿名函数**:立即执行的匿名函数,常用于模块模式以避免污染全局命名空间。 #### 对象 对象是面向对象编程的关键概念,JavaScript中的一切都可以视为对象。这一章介绍了如何使用对象来组织代码: - **...

    javascript源码大全(精)

    模块系统(import和export)则让JavaScript代码组织更加规范,支持按需加载和命名空间。 九、错误处理 了解如何捕获和处理JavaScript运行时错误,如try...catch语句,是编写健壮代码的关键。 十、性能优化 理解V8...

    JAVASCRIPT-使用面向对象的技术创建高级 Web 应用程序

    我们介绍了JavaScript对象作为词典的概念、函数的重要性、构造函数与原型、闭包以及如何模拟私有属性和命名空间。这些概念和技术对于任何希望使用现代Web开发技术构建复杂应用的开发者来说都是必不可少的。随着Web...

    JavaScript语言精粹(JavaScript.The.Good.Parts)

    书中虽然没有直接介绍ES6的import和export,但提出了使用IIFE(立即执行的函数表达式)和命名空间来实现模块化的早期策略。 7. **正则表达式**:JavaScript的正则表达式是进行字符串处理的强大工具。书中介绍了正则...

    javascript 经典封装

    7. **命名空间封装**:虽然JavaScript没有真正的命名空间,但可以模拟实现,比如使用对象来模拟命名空间,减少全局作用域中的变量数量,避免命名冲突。 8. **模块系统(CommonJS, ES6模块)**:在Node.js环境中,...

    JavaScript权威指南第4版+Javascrpt高级程序设计

    此外,书中的错误处理机制、作用域和命名空间的解析也对理解JavaScript的执行环境至关重要。 接着,转向《JavaScript高级程序设计》。这本书更注重实践,它不仅讲解了JavaScript的基础知识,还深入探讨了设计模式、...

    JavaScript语言精粹(修订版),源码

    这些功能可以帮助组织代码,避免全局命名空间污染。 8. **正则表达式** 正则表达式在JavaScript中用于字符串匹配和替换,书中会介绍如何编写和使用正则表达式,以及相关的全局变量和方法。 9. **错误处理** ...

Global site tag (gtag.js) - Google Analytics